请原谅我在该地区的无知,但有谁知道如何出口玛雅液体,以便可以输入三个.js?
我是Maya的新手,我刚刚为我制作的游戏制作了我的第一个模型,见下文:
使用Maya流体创建来自endgine的加力燃烧室效果。我出口飞机和武器没有问题,但我不知道如何在three.js游戏中使用液体。我做了几个小时的研究,试图找到关于这个主题的任何信息,但没有用。任何参考或帮助将不胜感激!
编辑:以下是我正在采取的步骤和我收到的错误的更新。真的希望这是有意义和可解决的。我无法在线找到与这些错误相关的任何好信息。
第1步:修改>转换>流体到多边形(全部按预期工作) 第2步:选择创建的几何图形>编辑>键> Bake Simulation,以下选项的屏幕截图。 (一切按预期工作)
步骤3:从Fluid to Polygons步骤中选择生成的几何体,在hypershader中选择我的fluidShape2并执行Hypershade Edit>转换为文件纹理(Maya软件)(不能按预期工作,得到错误)
以下是hypershader和多边形的截图:
以下是Maya吐出的错误:
// Error: file: /Applications/Autodesk/maya2017/Maya.app/Contents/scripts/others/copyConvertSolidTx.mel line 93: Cannot convert a texture connected to initialShadingGroup
对我来说,似乎超级着色器中的fluidShape2
节点实际上并不是着色器,并且创建的多边形实际上已分配lambert1
。虽然考虑到我上周开始使用Maya,但我并不确定。
编辑#2:
好的,这是一个截图,显示fluidShape设置为表面材质。
以下是流体着色属性的屏幕截图。
正如您所看到的,颜色是黑色,此对象的唯一照明是它产生的颜色。它根本不会从外部来源点亮。
“渲染/接收阴影”也会在“渲染统计信息”中取消选中。
问题:有没有办法烘烤白炽灯?
编辑#3:
按照你的10步计划后,我得到了与之前相同的结果。以下是之前和之后显示的屏幕截图。在火焰后面添加了一个绿色平面,以便在它的第二个状态中更容易显示。
作为流体:
作为应用了10个步骤的多边形:
这是属性编辑器:
这是通过hypershader应用的材料:
我重复了你给我几次的10个步骤,每次都有相同的结果。
答案 0 :(得分:1)
在导出之前,您需要将流体转换为多边形。
这是一个用于测试的MEL脚本。在脚本编辑器中运行它。
// opening nuke explosion example
file -import -type "mayaAscii" -ignoreVersion -ra true -mergeNamespacesOnClash false -namespace "Nuke" -options "v=0;" -pr "/Applications/Autodesk/maya2016.5/Maya.app/Contents/Examples/FX/Fluid_Examples/Explosions/Nuke.ma" ;
// selecting fluid container
select -r Nuke:fluid ;
// converting fluid to polygons
fluidToPoly ;
// changing mesh resolution under shapeNode/outputMesh tab in Attribute Editor
setAttr "Nuke:fluidShape.meshResolution" 3 ;
要通过菜单将流体转换为多边形,请选择流体容器并选择:
Modify
- Convert
- Fluid to Polygons
然后在“属性编辑器”中选择“形状”节点的选项卡,并在“输出网格”区域中更改“网格分辨率”。
查看有关导出的有用信息:Three.js Maya Export
转换完成后,默认的Maya着色器(Lambert1)将分配给新的多边形网格。您必须将流体纹理重新分配给新的多边形网格。为此,打开Hypershade和MMB - 将流体纹理拖放到多边形网格的Surface Material槽中。
请记住:如果您的场景中有动画,则需要在导出之前使用以下方法进行烘焙:
Edit
- Keys
- Bake Simulation
bakeResults -simulation true -t "1:100" -sampleBy 1 -disableImplicitControl true -preserveOutsideKeys true -sparseAnimCurveBake false -removeBakedAttributeFromLayer false -removeBakedAnimFromLayer false -bakeOnOverrideLayer false -minimizeRotation true -controlPoints false -shape true {"nurbsSphere1"} ;
您不需要任何类型的曲线插值(线性或贝塞尔曲线),只需在每一帧上烘焙键。您可以通过FBX或ABC文件格式导出动画。还有另外一种方法可以将动画网格导出为OBJ序列:Free OBJ Sequences Import/Export。
此外,如果您在导出光线时遇到任何问题,请将光线及其阴影烘焙在对象的纹理中。更好的方法是在每个顶点的基础上导出动画和纹理。
逐步说明:
选择一个流体容器并应用Modify-Convert-FluidToPolygons。您将在Viewport中看到带有Lambert1着色器的多边形对象。
在“大纲视图”(Outliner)中选择FluidObject,然后在AE(属性编辑器)中更改“流体形状输出网格”区域中的“网格分辨率”和“网格平滑迭代”(例如分别为0.5和2)。
然后在“大纲视图”(Outliner)中选择“PolyObject”(PolyObject),并在AE中选择带有initialShadingGroup的选项卡。
打开Windows-RenderingEditors-Hypershade,选择FluidTexture并使用MMB拖放到AE中的PolyObject的initialShadingGroup中的Surface Material Slot。
在场景中创建聚光灯。运行测试渲染。你会看到一个点燃的Poly。
要更改“透明度”,“不透明度”或“白炽度”,只需在“大纲视图”中选择“PolyObject”,然后在AE中选择“流体形状”选项卡并选择“着色区域”。
使用Maya 2017中的Arnold Renderer属性或Maya 2016及更早版本中的Mental Ray属性烘焙光(如果需要,还可以使用阴影)。
要从Maya输出Poly Mesh,您需要选择网格并应用命令Edit-Keys-BakeSimulation。
要为每个帧导出一系列纹理,您需要在Hypershade中选择FluidTexture并应用于它Edit-RenderTextureRange(您必须为导出的纹理序列指定帧范围,例如1-200,如以及文件格式,例如TIFF)
导出OBJ序列。