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

Export Maya fluid so that it can be imported into a three.js game

请原谅我在该领域的无知,但有谁知道如何导出玛雅流体以便将其导入 three.js?

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

尾部引擎的加力效果是使用 Maya 流体创建的。我可以导出飞机和武器,但我不知道如何在 three.js 游戏中使用流体。我已经做了数小时的研究,试图找到有关该主题的任何信息,但无济于事。任何参考或帮助将不胜感激!

编辑:这是对我正在执行的步骤和收到的错误的更新。真的希望这是有意义和可解决的。我在网上找不到与这些错误相关的任何有用信息。

第 1 步:修改 > 转换 > 流体到多边形(一切正常) 第 2 步:Select 创建几何体 > 编辑 > 键 > 烘焙模拟,选项截图如下。 (一切按预期工作)

步骤 3:Select 从 Fluid to Polygons 步骤生成的几何体,select 我在 hypershader 中的 fluidShape2 并执行 Hypershade Edit > Convert to File Texture(Maya 软件)(不起作用不出所料,报错 )

这是超着色器和多边形的屏幕截图:

这是 Maya 吐出的错误:

// Error: file: /Applications/Autodesk/maya2017/Maya.app/Contents/scripts/others/copyConvertSolidTx.mel line 93: Cannot convert a texture connected to initialShadingGroup

对我来说,hypershader 中的 fluidShape2 节点似乎实际上不是着色器,创建的多边形实际上已分配 lambert1。考虑到我上周开始使用 Maya,我不太确定。

编辑#2:

好的,这里是一个屏幕截图,显示了 fluidShape 设置为表面 material。

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

如您所见,颜色为黑色,该物体唯一的照明是它产生的照明。它根本没有从外部来源点亮。

在渲染统计中也未选中投射/接收阴影。

问:有什么方法可以烤白炽灯吗?

编辑#3:

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

作为流体:

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

这是属性编辑器:

这里是通过 hypershader 应用的 material:

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

导出之前,您需要将流体转换为多边形。

这是一个用于测试的 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 ; 

要通过菜单将流体转换为多边形,select 流体容器并选择:

ModifyConvertFluid to Polygons

然后 select 在属性编辑器中塑造节点的选项卡并在输出网格区域更改网格分辨率。

查看有关导出的有用信息:Three.js Maya Export

转换完成后,默认的 Maya 着色器 (Lambert1) 会分配给新的多边形网格。您必须将流体纹理重新分配给新的多边形网格。为此,打开 Hypershade 和 MMB 将流体纹理拖放到多边形网格的表面 Material 槽中。

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

EditKeysBake 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.

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

分步说明:

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

  2. Select Outliner 中的 FluidObject,然后在 AE(属性编辑器)中更改 fluidShape–Output Mesh 区域中的 Mesh Resolution 和 Mesh Smoothing Iterations(例如分别为 0.5 和 2)。

  3. 之后 select 在 Outliner 中选择 PolyObject 并在 AE 中选择带有 initialShadingGroup 的选项卡。

  4. 打开Windows–RenderingEditors–Hypershade, select FluidTexture 并使用MMB-拖放将其分配给Surface Material Slot in initialShadingGroup of PolyObject在 AE.

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

  6. 要更改透明度、不透明度或白炽度,只需 select 在 Outliner 和 AE 中的 PolyObject 转到 fluidShape 选项卡并选择 Shading area。

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

  8. 要从 Maya 输出多边形网格,您需要 select 网格化并应用命令 Edit–Keys–BakeSimulation。

  9. 要为每一帧导出一系列纹理,您需要在 Hypershade 中 select 一个 FluidTexture 并将其应用于编辑–RenderTextureRange(您必须为导出的纹理序列分配一个帧范围,例如 1-200,以及文件格式,例如 TIFF)

  10. 导出 OBJ 序列。