导出Maya流体,以便可以将其导入到three.js游戏中

时间:2017-06-28 02:20:46

标签: three.js maya mel

请原谅我在该地区的无知,但有谁知道如何出口玛雅液体,以便可以输入三个.js?

我是Maya的新手,我刚刚为我制作的游戏制作了我的第一个模型,见下文:

enter image description here

使用Maya流体创建来自endgine的加力燃烧室效果。我出口飞机和武器没有问题,但我不知道如何在three.js游戏中使用液体。我做了几个小时的研究,试图找到关于这个主题的任何信息,但没有用。任何参考或帮助将不胜感激!

编辑:以下是我正在采取的步骤和我收到的错误的更新。真的希望这是有意义和可解决的。我无法在线找到与这些错误相关的任何好信息。

第1步:修改>转换>流体到多边形(全部按预期工作) 第2步:选择创建的几何图形>编辑>键> Bake Simulation,以下选项的屏幕截图。 (一切按预期工作)

enter image description here

步骤3:从Fluid to Polygons步骤中选择生成的几何体,在hypershader中选择我的fluidShape2并执行Hypershade Edit>转换为文件纹理(Maya软件)(不能按预期工作,得到错误)

以下是hypershader和多边形的截图:

enter image description here

以下是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设置为表面材质。

enter image description here

以下是流体着色属性的屏幕截图。

enter image description here

正如您所看到的,颜色是黑色,此对象的唯一照明是它产生的颜色。它根本不会从外部来源点亮。

“渲染/接收阴影”也会在“渲染统计信息”中取消选中。

问题:有没有办法烘烤白炽灯?

编辑#3:

按照你的10步计划后,我得到了与之前相同的结果。以下是之前和之后显示的屏幕截图。在火焰后面添加了一个绿色平面,以便在它的第二个状态中更容易显示。

作为流体:

enter image description here

作为应用了10个步骤的多边形:

enter image description here

这是属性编辑器:

enter image description here

这是通过hypershader应用的材料:

enter image description here

我重复了你给我几次的10个步骤,每次都有相同的结果。

1 个答案:

答案 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槽中。

enter image description here enter image description here enter image description here

请记住:如果您的场景中有动画,则需要在导出之前使用以下方法进行烘焙:

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

此外,如果您在导出光线时遇到任何问题,请将光线及其阴影烘焙在对象的纹理中。更好的方法是在每个顶点的基础上导出动画和纹理。

enter image description here

逐步说明:

  1. 选择一个流体容器并应用Modify-Convert-FluidToPolygons。您将在Viewport中看到带有Lambert1着色器的多边形对象。

  2. 在“大纲视图”(Outliner)中选择FluidObject,然后在AE(属性编辑器)中更改“流体形状输出网格”区域中的“网格分辨率”和“网格平滑迭代”(例如分别为0.5和2)。

  3. 然后在“大纲视图”(Outliner)中选择“PolyObject”(PolyObject),并在AE中选择带有initialShadingGroup的选项卡。

  4. 打开Windows-RenderingEditors-Hypershade,选择FluidTexture并使用MMB拖放到AE中的PolyObject的initialShadingGroup中的Surface Material Slot。

  5. 在场景中创建聚光灯。运行测试渲染。你会看到一个点燃的Poly。

  6. 要更改“透明度”,“不透明度”或“白炽度”,只需在“大纲视图”中选择“PolyObject”,然后在AE中选择“流体形状”选项卡并选择“着色区域”。

  7. 使用Maya 2017中的Arnold Renderer属性或Maya 2016及更早版本中的Mental Ray属性烘焙光(如果需要,还可以使用阴影)。

  8. 要从Maya输出Poly Mesh,您需要选择网格并应用命令Edit-Keys-BakeSimulation。

  9. 要为每个帧导出一系列纹理,您需要在Hypershade中选择FluidTexture并应用于它Edit-RenderTextureRange(您必须为导出的纹理序列指定帧范围,例如1-200,如以及文件格式,例如TIFF)

  10. 导出OBJ序列。