导入自定义模型¶
Time:10 分钟
本文概述了 Roblox 从 Autodesk Maya 或 Blender 导入自定义模型的流程(包括带有动画的模型),可作为非玩家角色与机械对象等使用。
关于模型的指导原则¶
常规准则¶
在 Maya 或 Blender 中构建角色模型时,请遵循以下常规准则:
确保将单位设置为 Centimeter(厘米)。
几何体网格应仅具有转换值。这些值应相对于其父关节。举例来说,如果从其关节取消网格的父项,则应将转换值清零 (0, 0, 0)。
如果没有看到此情况,请取消几何体网格的父项,冻结其变换,然后将其父项设置回各自关节。现在,它们应该具有本地转换值,并且如果取消父项,则将它们清零。
所有关节均应正确放置且任何轴均不得旋转,它们应该都为 (0, 0, 0)。同样,每个关节的比例应保持默认值,并设置为 (1, 1, 1)。
模型层次结构¶
对于总体上的模型层次结构,请确保:
具有名为 Root(区分大小写)的最高级关节。
Root 的每个子代关节都有一个名称相同、或名称带有 _Geo 后缀的匹配的几何体。比如,如果关节名为 Torso,那几何体的名称应为 Torso 或 Torso_Geo。
Root
Torso
Torso_Geo
RightUpperLeg
RightUpperLeg_Geo
RightLowerLeg
RightLowerLeg_Geo
LeftUpperLeg
LeftUpperLeg_Geo
LeftLowerLeg
LeftLowerLeg_Geo
导出模型¶
请参阅下列指导,具体取决于您正在从哪一软件导出(Maya 或 Blender)。
从 Maya 导出 »¶
从 Maya 导出角色之前,确保将单位设置为 Centimeters(厘米)。然后使用 File(文件) → **Export All(全部导出)**并对默认设置进行以下更改:
设置 值
几何体
平滑网格 已启用
参考资产内容 已启用
单位
自动 已启用
轴转换
上轴 Y
FBX 文件格式
类型 二进制
版本 FBX 2014/2015
如果还要导出纹理,请打开 **Embed Media(嵌入媒体)**部分并确保选中 Embed Media(嵌入媒体)。
从 Blender 导出 »¶
从 Blender 导出角色之前,请确保将单位设置为 Centimeters(厘米)。然后在 **Export FBX(导出 FBX)**面板中,对默认设置进行以下更改:
设置 值
**Camera(镜头)**按钮 已禁用
**Lamp(灯具)**按钮 已禁用
如果要将纹理导出为嵌入媒体,请将 **Path Mode(路径模式)**设置为 Copy(复制)并单击其右侧的框,这样看来好像正在弹出纸张。请注意,这只适用于二进制 FBX 导出,而不适用于 ASCII。
导入至 Roblox Studio¶
想要了解导入自定义模型的流程,可下载本示例(SimpleDog.fbx)。
下载好 FBX 文件后,请按如下步骤操作:
从 Studio 的 Plugins 选项卡中,点击 Avatar Importer(角色导入)按钮。
点击四个选项中的 Custom(自定义)选项。
浏览下载好的文件(SimpleDog.fbx)。导入 Studio 中后应为此模型。
(IMAGE)
导入/导出动画¶
如果您使用 Maya 或 Blender 直接进行了模型的动画制作,您可以通过 Roblox 的内置 /articles/using animation editor|动画编辑器
来导入及上传动画。
导入动画¶
若想从 FBX 文件中导入动画:
在 Plugins 选项卡中,点击 Animation Editor(动画编辑器) 。
选择模型(ImportedCustomRig)并点击 Create (如果可以的话)。如有关于 R15 虚拟角色的警告信息,直接忽略即可。
从动画编辑器的 File 菜单中(非 Studio 的 File 文件菜单)选择 Import FBX Animation(导入 FBX 动画)。
浏览并选择同一 FBX 文件(SimpleDog.fbx)。
计算髋高 »¶
任何通过 Avatar Importer 虚拟角色导入器导入的模型都会被分配为 Humanoid
人型生物对象,即使他们看上去并非如此。人型生物包括有若干随模型设计和高度而变化的属性,如 Humanoid/HipHeight|HipHeight
。
确定大致的 Humanoid/HipHeight|HipHeight
值的方式如下:
移动模型以使其脚部/底座的 Y 位置为 0 ,如待在默认的 Baseplate 上的对象。
在 Studio 的命令栏(View → Command Bar)中,粘贴下面的代码。
从 Output 输出窗口中(View → Output)复制或记录下显示的值;后面测试自定义模型时会用到。
local hrp = workspace.ImportedCustomRig.HumanoidRootPart
print(hrp.Position.Y - (0.5 * hrp.Size.Y))
导出动画¶
当您将动画顺利导入之后,还需要将其上传到 Roblox 。
动画编辑器的 File 菜单中(而不是 Studio 的 File 文件菜单)选择 Export(导出) 。
选择新栏位或者已有栏位。
上传完成后,复制或记录动画的 ID,随后在测试自定义模型时会用到。
https://www.roblox.com/catalog/2350495664
从对话窗口退出;此时,您可以把动画编辑器窗口也一并关闭。
在 Studio 中进行测试¶
最后一个环节:您可以按如下方式来测试模型:
在管理器窗口中,将 ImportedCustomRig 移动到 ServerStorage 中。
将鼠标放在 ServerScriptService 上,点击
按钮,并插入一个新的 Script 。
将刚才创建的新脚本重命名为 CreateObjectFromRig。
将下列代码粘贴到该脚本中。
local ServerStorage = game:GetService("ServerStorage")
local animationID = 0000000000
-- 将模型复制到 workspace 工作区并设置各属性
local template = ServerStorage.ImportedCustomRig
local object = template:Clone()
local humanoidObject = object.Humanoid
humanoidObject.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
humanoidObject.HipHeight = 2.45
object.Parent = workspace
-- 设置模型位置
object:MoveTo(Vector3.new(20, 4, 0))
-- 创建自定义动画
local animation = Instance.new("Animation")
animation.AnimationId = "rbxassetid://" .. animationID
animation.Parent = ServerStorage
-- 播放自定义动画
local animationTrack = object.Humanoid:LoadAnimation(animation)
animationTrack:Play()
在第 3 行,将
animationID
值改为您之前在导出动画部分记下的 ID。
local ServerStorage = game:GetService("ServerStorage")
local animationID = 2350495664
-- 将模型复制到 workspace 工作区并设置各属性
在第 10 行,将
humanoidObject.HipHeight
值改为您在 Hip Height 部分计算所得的数字。
-- 将模型复制到 workspace 工作区中并设置各属性
local template = ServerStorage.ImportedCustomRig
local object = template:Clone()
local humanoidObject = object.Humanoid
humanoidObject.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
humanoidObject.HipHeight = 2.9460468292236
object.Parent = workspace
进行游戏,您应该会在游戏中看到狗了。它会以在 FBX 文件中事先配置的简单动作来进行移动。
(VIDEO)
***Roblox官方链接:导入自定义模型