-FxYaM- - Maya
type: channel
link: https://www.fxyam.cn/tag/Maya/
items: 【Maya】三渲二 Pencil+ 4 for Maya 线稿渲染
items: 【Maya】【Qtpy】自动化清理maya文件，带材质abc导入unreal（maya插件制作初体验）

【Maya】三渲二 Pencil+ 4 for Maya 线稿渲染
type: item
date: 2025-11-08T01:02:00+08:00
description: .NiceMapMarker{width:100%;height:300px}@media (min-width: 1024px) {.NiceMapMarker{height:450px}}准备概览目标：在 Maya 中用 Pencil+ 4 做测试静态线稿渲染（不涉骨骼动画），快速得到“外轮廓 + 结构线”的干净结果。测试模型：使用《绝区零》官方发布模型（来源见下）。模型格式：原始为 MMD（.pmx），为静帧演示转换为 OBJ。渲染思路：以 Line Set 分类出线（外轮廓 / 对象轮廓 / 交叉 / 材质边 / 硬边等），按需给不同类线指定独立笔刷，并用遮罩与焊接确保线条干净不重影。进阶：测试插件主要功能，排查风险下载与安装官网：Pencil+ 4 for Maya – Downloads – | PSOFT WEBSITE✅ 请购买或授权试用，遵守 EULA 与版权法规。神秘网站：PSOFT Pencil+ 4.2.3 For Maya 2017 – 2025 Win⚠️ 为合规与版权安全，本文仅供个人学习素材与格式转换（MMD→OBJ）适合只做静态渲染预览；若要绑定/动画，建议保留骨骼信息并在 DCC 内做更规范的导入流程。来源《绝区零》官方发布的模型下载汇总：绝区零 UP主激励计划 模型 汇总下载遵守使用条款 / 二创规范，避免商用侵权。转换（PMX → OBJ）在线：AnyConv导出建议：仅静帧 → OBJ 即可（无骨骼、无动画）。导入 Maya 后的整理Modify > Freeze Transforms、Center PivotMesh Display > Set to Face 再 Soften/Harden Edges（按结构设置硬/软边）合并或分离网格（按线条策略决定是否需要单体或多对象）统一材质（可先赋一个纯白 Lambert 以便观察线）Pencil+ 4 基础上手名称以 Pencil+ 4 for Maya 常见面板为参考，菜单/UI 可能随版本略有差异。加载插件Windows > Settings/Preferences > Plug-in Manager勾选 Pencil+4 相关插件（如 Line / Material 等）。创建 Line Set（线集）新建一个 Line Set（可按「角色」「道具」「背景」分层管理）。将要出线的对象拖入或用过滤规则指定。勾选出线类别（核心）见下「Line Set 详解」。先只开 Outline（轮廓），确认外轮廓正确。为不同线类指定独立笔刷各类别旁的 Specific Brush Settings 打勾后，会出现一个可指派笔刷资源的槽（例如 PencilBrushSettings_VisibleX）。将 Brush/Stroke 预设拖入，使该类线有独立的粗细 / 纹理 / 虚线 / 端点等。渲染预览切到目标相机，设置输出分辨率。渲染（需要用pencil自己的渲染器）。如需前后景压线逻辑，使用多 Line Set + 遮罩（见下）。这里有一个比较通俗易懂的视频：Line Set 详解与推荐搭配一些功能解释和理解1) Outline（轮廓）Open Edge（开放边）：把模型边界/洞口也当作轮廓线（衣服开口、眼洞等）。Merge Groups（合并组）：同组多个物体合并计算外轮廓，内遮挡不重复出线。Specific Brush Settings：给外轮廓单独用更粗/更黑的笔刷。搭配：角色主体（身体+衣物+饰品）常勾 Merge Groups，得到一圈干净大外轮廓；需要服装开口强调时再开 Open Edge。2) Object（对象轮廓）Open Edge：与 Outline 同义，但按每个对象独立计算。Specific Brush Settings：仅覆盖对象轮廓的笔刷。用途：同一组内的零件各保一圈外轮廓的画风（更“零件化”）。3) Intersection（交叉线）Self-Intersection（自相交）：自身表面互相穿插/折叠处出线（衣褶、厚面回折）。Specific Brush Settings：仅覆盖交叉线。用途：强调接触/压痕（袖口压在手臂、鞋底接地）。技术插画常用。4) Smoothing Boundary（光滑组/硬边边界）Specific Brush Settings用途：在硬边/法线断开处出线。非常适合硬表面倒角线/板块转折。5) Material ID Boundary（材质 ID 边界）Specific Brush Settings用途：同网格内不同材质 ID的分界出线 → 配色块分隔、面板缝，无需额外切线。6) Selected Edges（选定边）Specific Brush Settings用途：仅对你手工选择的边出线…

【Maya】【Qtpy】自动化清理maya文件，带材质abc导入unreal（maya插件制作初体验）
type: item
date: 2025-11-06T20:40:00+08:00
description: .NiceMapMarker{width:100%;height:300px}@media (min-width: 1024px) {.NiceMapMarker{height:450px}}使用qtpy制作插件实现材质导出、材质规范化与 Alembic 导出（含 2018+ 兼容方案）找了比较多的教程，这个教程属于口齿比较清楚，思路也比较清楚的，但是不兼容maya2018，需要改动很多地方，我改的非常痛苦..但是公司只能装2018，命很苦了。他的教程版本是2022，换成2022以上会好很多。文章中的git文件如果打开404，需要在git上申请，被邀请以后可以下载py测试概述之前插件一直由 TD 支持；最近打算自己动手做一套。调研下来发现不少坑（API、编码、reload、路径、wrapInstance 等）。感觉和EUW有相似之处，挺好上手的，一天不到就搞定了..这里有三个板块：Qt/UI 基础打通（Qt Designer、UI 加载、入口脚本、2018/2022+ 兼容）工具面板设计与信号绑定（按钮/日志/右键帮助跳转）三大实用功能落地1) 导出 Maya 材质信息（SG 与贴图 Pattern） → CSV 2) 一键把分配材质刷成 lambert 并修正类型/命名 3) 带材质Alembic 导出（按 Time Slider，含插件检测与旗标降级回退）有插件演示1. 环境与版本差异1.1 基本对照版本PythonQt / PySide兼容关注点Maya 20182.7Qt 5.6 / PySide2reload、wrapInstance(long)、编码（utf-8-sig）、字符串类型（basestring vs str）Maya 2022+3.xQt 5.15 / PySide2importlib.reload、wrapInstance(int)、路径字符串、API 细节兼容注：2018 用 PySide2（而非旧 PySide），但 Python 还是 2.7；2022+ 统一到 Python 3.x。1.2 推荐目录结构F:\Test\QTtest\ ├─ ui\ │ └─ mainWidget.ui # Qt Designer 做的 .ui ├─ icons\ # 可选 ├─ testUI.py # UI 主模块（加载 .ui，绑定按钮） ├─ ops_mat_export.py # 功能1：导出 SG & 贴图 Pattern ├─ ops_mat_lambertize.py # 功能2：一键刷 lambert + 规范 ├─ ops_abc_export.py # 功能3：Alembic 导出 └─ bootstrap_compat.py # 入口/兼容辅助（sys.path、reload 兼容等）2. Qt / UI 基础打通2.1 工具：Qt Designer你可用 Qt Designer 直接搭界面（按钮、文本框、日志区域等），存成 ui/mainWidget.ui。UI 中控件的 objectName 后续会在代码里通过 findChild 找到并绑定信号。参考图： 官方下载链接2.2 模板（教程作者提供）""" Maya/QT UI template Maya 2023 """ import maya.cmds as cmds import maya.mel as mel from maya import OpenMayaUI as omui from shiboken2 import wrapInstance from PySide2 import QtUiTools, QtCore, QtGui, QtWidgets from functools import partial # optional, for passing args during signal function calls import sys class MayaUITemplate(QtWidgets.QWidget): """ Create a default tool window. """ window = None def __init__(self, parent = None): """ Initialize class. """ super(MayaUITemplate, self).__init__(parent = parent) self.setWindowFlags(QtCore.Qt.Window) self.widgetPath = ('C:\\') self.widget = QtUiTools.QUiLoader().load(self.widgetPath + 'mainWidget.ui…