找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9929|回复: 2

【模型篇】关于加入自制模型的若干问题

[复制链接]
发表于 2010-12-28 12:55:43 | 显示全部楼层 |阅读模式
本帖最后由 6522748 于 2010-12-28 23:31 编辑

我说说对加入红警3新模型的看法吧

假设您安装的是3DS MAX 9,那么请把编译器目录里的3DSMax9_Plugin目录内的东西准确复制到MAX的安装文件夹里

1.鼠标选择框:
      要想在游戏里能用鼠标选择物体,这个物体在MAX里必须有一个外框,新建一个长方体包围这个物体,长方体可以命名为OBBOX01,它在W3DTOOL里设置为
                           1.jpg

2.FP模型:
      一些模型含有FP模型,在代码里一般有类似的字眼:
        <ModelConditionState
                    ParseCondStateType="PARSE_NORMAL"
                    ConditionsYes="FORMATION_PREVIEW">
                    <Model
                                Name="SUKodiak_FP" />
        </ModelConditionState>
       它的作用是在游戏里选择某个载具后,同时按住鼠标2个按键,那么屏幕里会出现那个载具的绿色的影像,如果是飞行器,它下面还有一根杆。
       那么如何制作这个模型呢?如果是地面的物体,可以直接使用主模型SKN来制作,复制一份MAX并打开,删除多余的东西只保留主模型,然后重新为它加载材质,如下图
               2.jpg

要点:1.加载objectsformationpreview.fx
        2.加载漫反射贴图和法线贴图

     按照上面弄完之后场景里的模型变成了绿色,如下图
          3.jpg

      如果是飞行器,最好再搞一根杆并为这根杆附上漫反射贴图和法线贴图,我直接上传这根杆和杆的贴图了 杆.rar (47.05 KB, 下载次数: 44)


3.COL模型
     COL就是塌陷模型,载具和建筑都有COL模型,它们在消亡时会分解成若干块   
     官方的素材包COL模型有个特点,比如有一块部分叫Bone_D_01的,那么就有一个长方体COL_Bone_D_01和它对应,而且这个
COL_Bone_D_01长方体的具体参数在代码里有非常密切的关系
     下面是COL的重点
     举个例子,天狗机器人COL模型中有一物体名为Bone_D_01并有一个长方体COL_Bone_D_01,那么天狗机器人的损坏代码里的这段
             <BoneVolume BoneName="Bone_D_01" Mass="1215" Spinniness="2.0" AngularDrag="0.01" LinearDrag="0.01"                                                           ContactTag="DEBRIS" >
                       <Box  HalfSizeX="10.9" HalfSizeY="3.84" HalfSizeZ="1.452" >
                                  <Translation x="0.711" y="0.0" z="7.534" />
                                  <Rotation x="0.0" y="0.0" z="0.0" w="1.0" />
                       </Box>
             </BoneVolume>

            COL_Bone_D_01的中心坐标为<Translation x="0.711" y="0.0" z="7.534" />中的X.Y.Z的取值
            COL_Bone_D_01的几何特征的一半为<Box  HalfSizeX="10.9" HalfSizeY="3.84" HalfSizeZ="1.452" >中X.Y.Z的取值
            COL_Bone_D_01的几何特征X.Y.Z相乘再乘以2.5为Mass的取值

    几何特征查看? 物体右键属性
          4.jpg
     
要点:
      制作的COL模型在输出W3X时就不要调用SKL了
      COL_Bone_D_01实际上应该没有具体的输出,就是没有关联到Bone_D_01,它只是为Bone_D_01确定了一个合理的体积和中心坐标,毕竟要是某个损坏部件外观不规则比较另类,那么直接确定他的中心就比较困难,还不如建立一个跟它长的差不多的长方体并使用这个长方体的参数,
      同志们在设置Bone_D_01的参数时也不一定非要建立一个长方体 COL_Bone_D_01。只要自己清楚怎么设置好Bone_D_01的几个重要参数就可以了,目前我的测试来看,损坏过程正常合理


4.关于SKL,SKN,动画的问题
     SKL是什么东西呢?我也说不清,我就是注意到了这个SKL.W3X包含了某个物体身上所有的属于骨骼的部件的文件
      以时空坦克为例
      首先建立好模型SKN,设置好所有的骨骼点。除了COL模型,别的动作文件都必须在这个模型SKN文件上展开工作并且不能添加新的骨骼,如果您确定了这个SKN不再需要修改,那么就可以输出SKL了,参数如下图:
                  1.jpg
       输出SKL后就要输出SKN,如下图
                  2.jpg
         要点:1.输出一定要调用刚才生成的SKL,不然以后的动画都不会关联SKN
                  2.勾选那个侦测碰撞的属性,要不然到了游戏里它可以穿过别的东西而不用拐弯了

输出SKN之后可以继续搞动画了,比如时空坦克的开关盖动画输出设置为
          3.jpg
          要点:输出时要调用生成的SKL

         总体来说需要注意的地方:
              1.模型重要骨骼修改后要重新生成SKL
              2.COL模型最好独立出来不要关联到SKL,否则负担大,不能用COL模型生成SKL
 楼主| 发表于 2010-12-28 13:49:58 | 显示全部楼层
本帖最后由 6522748 于 2010-12-28 23:33 编辑

5.关于自制物体有炮塔旋转的问题
      自制的模型想添加炮管能够旋转,那么请按如下设置      以天启坦克的炮塔为例,代码里有这么一段
             <Turret
                     TurretNameKey="Turret"
                     TurretPitch="Turret_Pitch"
                     TurretID="1" />   
                     这段话的主要意思是,    Turret 管理炮塔的水平转动  Turret_Pitch管理炮塔的竖直摆动,

之后
               <TurretSettings
                          TurretTurnRate="90"
                          TurretPitchRate="180"
                          AllowsPitch="true"
                          MinimumPitch="-90d"
                          PitchHeight="90%"
                          MinIdleScanTime="1.0s"
                          MaxIdleScanTime="5.0s"
                          MinIdleScanAngle="0.0"
                          MaxIdleScanAngle="50.0"
                          MaxDeflectionAntiClockwise="90d"
                          MaxDeflectionClockwise="90d"
                          NaturalTurretAngle="45d"
                          RecenterWhenOutOfTurnRange="false"
                          ComeToHaltJiggle="1d">
                          <TurretAITargetChooserData
                          CanAcquireDynamicIfAssignedOutOfRange="true"
                          IdleScanDelay="=$MEDIUM_IDLE_SCAN_DELAY"/>
               </TurretSettings>

有几句话重要的
TurretTurnRate="90"-------炮塔水平转动的角度范围
TurretPitchRate="180"----------炮塔竖直摆动的角度范围
MinimumPitch="-90d"--------最低摆动角度


MaxDeflectionAntiClockwise="90d"
MaxDeflectionClockwise="90d"
上面2句是角度锁定,当攻击目标超出了炮塔的这个属性,炮塔就不会继续转向,以免做出一些奇怪的事情,比如苏联断腿佬有3个炮管,当左边出现目标时是左炮管攻击而不是右炮管,要是右炮管攻击那么右炮管就转进了身体里,极不协调

NaturalTurretAngle="45d"----------炮塔(炮管)的自然状态下的摆放角度,比如炮艇机的炮管自然状态下是270度垂直于机身


MinIdleScanAngle="0.0"
MaxIdleScanAngle="50.0"
上面2句是炮管无聊时转动的角度范围


6.模型新增面的问题
      如果是截取来的模型,在这个基础上修改导致面发生了变化,那么必须重新设定光滑组,不然会出现导入游戏后新增面与周围不协调的问题。
      方法为在MAX里将相应模型转换为可编辑多边形或网格,然后在修改器那里选择多边形或面层级,下面的光滑组那里使用自动光滑,就可以了。最好使用自动光滑,以前我试过使用同一个光滑组,表面上看好了,但是进了游戏发现模型上有大漏洞。
回复

使用道具 举报

发表于 2010-12-28 21:48:24 | 显示全部楼层
透彻,把我不明白的地方搞明白了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|管理员邮箱|红警DIY论坛 |网站地图

GMT+8, 2026-8-25 13:21 , Processed in 0.064844 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表