【问题标题】:Export Maya fluid so that it can be imported into a three.js game导出 Maya 流体,以便可以将其导入到 three.js 游戏中
【发布时间】:2017-12-01 05:41:58
【问题描述】:

请原谅我在这方面的无知,但有谁知道如何导出 Maya 流体以便可以导入到 three.js 中?

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

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

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

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

第 3 步:从 Fluid to Polygons 步骤中选择生成的几何体,在 hypershader 中选择我的 fluidShape2 并执行 Hypershade Edit > Convert to File Texture (Maya Software)(不能按预期工作,出现错误)

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

这是 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:

好的,这里是显示流体形状设置为表面材质的屏幕截图。

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

如您所见,颜色为黑色,该对象的唯一照明是它产生的照明。它根本不是从外部光源点亮的。

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

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

编辑#3:

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

作为流体:

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

这里是属性编辑器:

这是通过hypershader应用的材质:

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

【问题讨论】:

  • 我在回答中添加了分步说明。
  • 我不知道它是否特定于 Maya 2017,但是 MMB 将流体形状拖到 initialShadingGroup 的表面着色器上不起作用。如果您将新的 Blinn 材质分配给生成的多边形,然后将您的 fluidShape 链接到您希望影响的 Blinn 材质的属性,它确实有效。
  • 如果当前方法不起作用,请尝试其他方法。也许您需要为网格(Lambert2)分配一个新的着色器,或者禁用 Arnold Renderer 模块。
  • Blinn 着色器有高光,Lambert 没有。

标签: three.js maya mel


【解决方案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 ; 

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

ModifyConvertFluid to Polygons

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

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

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

记住:如果你的场景中有动画,你需要在导出之前使用:

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. 选择一个流体容器并应用 Modify–Convert–FluidToPolygons。您将在视口中看到一个带有 Lambert1 着色器的多边形对象。

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

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

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

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

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

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

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

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

  10. 导出 OBJ 序列。

【讨论】:

  • 非常感谢您的详细回复!我将听从您的建议,并在实施后将答案标记为已接受。虽然感觉已经不错了 :) 再次感谢您!
  • 好的,所以当我将流体转换为多边形时,它会将“InitialShadingGroup”连接到创建的多边形。当我在 Edit > Keys > Bake Simulation 之后尝试在光照中烘焙时,我收到此错误:Cannot convert a texture connected to initialShadingGroup。我找不到有关此错误的任何信息。你遇到过这种情况吗?
  • 不。我的意思是另一个问题:three.js 无法识别导入的灯光。
  • 哦,这种流体不接收光,它通过映射到温度的白炽通道自发光。不透明度通道由密度控制。颜色是黑色,在 Lighting 部分我没有选中 Real Lights。
  • 颜色不是黑色。你看到我的照片了吗?我将流体纹理分配给多边形模型。
猜你喜欢
  • 2010-11-12
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
相关资源
最近更新 更多