1、下面你将看到一些 3D 建模技巧,导出时的缩放比例、皮肤的用法、更好地重用材质及顶点减色及物体定位、设置物体的 UID(User ID)。建模所有 M3G 导出插件的一个公共的问题是为模型选择合适的缩放比例。所有 M3G 导出插件似乎有不同的方法在如何将 3Dsmax 中的一个单位和游戏的一个单位对应。HI Corp Mascot 的导出插件和 3Dsmax 插件将所有的顶点缩放至一个 3Dsmax 单位(也就是 3.2f-3.0f)。技巧记住 3dsmax 总是为普通单位保持缩放。模型的缩放将会和 3dsmax 的一个单位相同(一些导出插件是把模型缩小 100 倍)。在 Mascot 中,一
2、个 3dMax 单位将与数值1 对应(不是固定点 1,它是 4096)。这就意味着在3Dsmax 透视图里模型看上去会非常大。由于 Mascot 的定点数及 16 位的限制,我们不得不将所有的顶点保存在-32000 到+32000 的范围之内。皮肤当使用骨架和皮肤的时候,你不得不将顶点的分量设为0.0f 或 0.1f。为了确保这些,你可以这样做: 选择皮肤,封装。 检查所有 “顶点”。 选择所有顶点(用移动工具)。 选择 “分量属性”里的“锁定大小”。公共注意事项 记得连接所有的顶点。 在导出前将所有堆折叠(不是皮肤修改器)。 注意备份。JSR-184 特殊的技巧转换JSR-184 的一个主要
3、问题是结点的缩放。很多美工喜欢用缩放工具去缩放物体。但是,缩放并不会应用到物体的顶点。而 3Dsmax 是应用缩放到一个网眼的转换矩阵上了。这意味着如果你将一个物体缩放了 10 倍并导出,这个网格顶点半角依然是 1 倍,并且缩放将应用到转换矩阵上了。当我们为物体进行旋转和平移,我们得到的场景在3Dmax 中看起来是 OK 的,但在游戏中就都混乱了。 解决方案是不要在网眼上运用缩放工具。而应该用直接缩放顶点。如果已经将缩放运用在网眼上,应该用3DMax 的“Reset XForm”工具(在“Utilities tab”栏能找到),“Reset XForm”将设置旋转/平移矩阵至单位矩阵并“冻结”
4、顶点至当前位置。特别要注意的是应用之后它将重置缩放,也将节点旋转至最佳位置,并且网眼的顶点将被旋转至与世界相匹配,且节点的转换将设置为 0度。 同样,记得保持编辑器堆尽量小,并在导出以前将它们折叠。一些编辑器会保持内部的材质且这些通常建立了多材质,正如你猜中的那些,不会在 3Dmax 中看见,但会将你的游戏界面搞得很混乱。用户编号(User ID)在.m3g 文件中网眼用 find(int uid)method 方法查找。网眼的 UIDs 能在导出时由导出插件设置或由插件自动生成并在分析日志文件中找到。在导出工具中设置用户编号有一点麻烦,在导出的时候 UIDs 并没有被保存(一个错误报告将发送
5、给开发者)。当前最好的解决方案是依靠3Dmax 中的物体的名字,分析日志文件,并为游戏编辑一个对应的用户编号对照表。 物体重用通常,一些按类别来命名的方案在 3Dmax 中应该被使用,例如,“game_mesh”和“game_mesh01”可能是一样的网眼但在游戏中那是很自然的去重用物体来节省空间,用一个 max 脚本来移除重复的网眼并且只导出转换的拷贝(在这种情形下,我们需要用一个小的虚拟的网眼来代替原始的网眼),然后为重用生成一个分开的基于命名方案的表。 物体定位物本的位置被导出在.m3g 文件中,转换节点能用以下方法找回:myMesh.getTransformTo(theWorld, n
6、ewTransform); 材质在 JSR-184 中所有的材质的尺寸必须是 2n x 2n (2的 n 次方)(如 32x32,128x64)。建议最大的尺寸是256x256(长宽为 256 的材质通常是最大的限制当它们加载进内存中)。如果材质有不同的属性,如 alpha 通道(透明),我们应该为每个的模式用不同的材质。UV 锚点在 3Dsmax 中被限制在 0.0f 至 1.0f 的范围之间(这是一个围绕在材质周围的蓝色的正方形在 UV-unwrap 中,在下面的图片中)。如果它们不在范围中,3Dsmax 的导出插件将生成一个警告。在 3Dsmax 中“Tile bitmap”选项应该总是
7、关闭的,这是为了防止用户意外地拖动锚点到想得到的范围之外。顶点颜色要增加预先计算的灯光到 3Dmax 场景中并运用顶点颜色,做如下步骤: 设置 “Render/Environment/Global Lightning/Ambient“成黑色 (默认模式)。 增加灯光到场景。 选取你的网格,用在“Utilities tab/More”中发现的“Assign Vertex Colors”工具,先取“Shaded”并按下“Assign to Selected”。 将灯光从场景中移除。 折叠起网眼。 设置 “Render/Environment/Global Lightning/Ambient“成白色。 在网格上通过右键打开网格的属性,激活“Vertex Channel Display”。 导出。