虽然您可以通过调用 HumanIK API 中提供的函数,在运行时代码中以专门的方式成功创建 HumanIK 角色化,但让您组织中的美工人员、动画师或技术设计师在可视化设计工具中创建角色化通常更简单。可为美工人员提供即时反馈,以便美工人员对角色应用 IK 或重定动画目标以测试角色化,并根据测试结果轻松调整角色化。当美工人员对角色化感到满意后,他或她即可将其导出到文件,您可以在运行时将该文件加载到游戏中。
美工人员可以使用以下任意可视化工具创建 HumanIK 角色化文件。
MotionBuilder 和 HumanIK 由相同的核心技术开发而来,并继续共享骨架映射到内置生物力学模型的许多相同要求。在 MotionBuilder 中创建的任何有效两足动物或四足动物的角色化在 HumanIK API 中应该同样有效。但是,要将 MotionBuilder 角色化导出到可以使用 HumanIK API 加载的文件中,您必须首先构建和安装用于您的 MotionBuilder 版本的 HumanIK 插件。
请注意四足动物角色的特殊要求:如果您计划使用 HumanIK 创建四足动物角色,请阅读为四足动物使用 HumanIK 中的重要信息。
完成这一步的方式会略有不同,取决于您所用的工具以及所安装的工具版本;请参见有关工具的文档。所有工具均使用类似于下图的可视界面:
该文件可能会伴随一个 XML 文件,用于指示美工人员或装配师已映射到每个 HumanIK 节点的角色骨架中的骨骼名称。当您写入用于在运行时在 FK 动画系统和 HIKCharacterState 之间转换动画数据的代码时,可以使用该文件中的信息。请参见反向运动学解算和 重定目标解算。
使用美工人员创建的二进制文件中的数据在游戏运行时创建 HumanIK 角色的过程,因创建的文件类型不同而略有不同。
如下所述加载了角色化后,HIKCharacter 即可供使用。继续执行在初始化中列出的步骤,以设置您的角色所需的其他 HumanIK 对象。
调用 HIKLoadCharacter() 函数,利用 .hik 文件中包含的数据创建新的 HIKCharacter。此函数需要以下参数:
Autodesk, Inc. 提供给您的许可证密钥(在您使用的是评估版本的 HumanIK 的情况下)。如果如设置 HumanIK 许可证密钥所述已在源代码文件中包含 autodeskmwkey.h 文件,则可使用预定义的值 AutodeskCustomerString。如果您使用的是完全许可版本的 HumanIK,则可以传递空值。
指向将调用以为 HIKCharacter 分配内存的回调函数的指针。可以指定标准 malloc 函数,或满足与 malloc 相同的类型定义的任何自定义内存分配方法。请参见 HumanIK 对象和内存管理。
HIKCharacter * MyChar = HIKLoadCharacter( "C:\data\hero.hik", AutodeskCustomerString, &malloc);
HIKCharacterDefinition MyDef;
指向将调用以为 HIKCharacter 分配内存的回调函数的指针。可以指定标准 malloc 函数,或满足与 malloc 相同的类型定义的任何自定义内存分配方法。请参见 HumanIK 对象和内存管理。
指向将调用以取消分配内存的回调函数的指针。可以指定标准 free 函数,或满足与 free 相同的类型定义的任何自定义内存取消分配方法。请参见 HumanIK 对象和内存管理。
Autodesk, Inc. 提供给您的许可证密钥(在您使用的是评估版本的 HumanIK 的情况下)。如果如设置 HumanIK 许可证密钥所述已在源代码文件中包含 autodeskmwkey.h 文件,则可使用预定义的值 AutodeskCustomerString。如果您使用的是完全许可版本的 HumanIK,则可以传递空值。
HIKCharacter * MyChar = HIKReadFromStream( def, stream, streamSize, &malloc, &free, AutodeskCustomerString, );