MDL可以由多个Part组成,例如:

并且每个Part里还可以有多个Sub-model,例如:

我们知道实体有一个body变量可以用来决定需要显示的Sub-model,
典型的例子就是武器模型多手臂,我们把实体的body设为0就会显示1号Sub-model了,
====================================
我们有一个模型,它有2个Part,
这两个Part里分别有2个Sub-model,
假如我们要同时显示“1号Part的2号Sub-model”和“2号Part的1号Sub-model”,
但根据上文介绍,实体只有一个body变量,我们怎么决定每个Part的Sub-model呢?
观察一段绘制模型的代码:(看不懂可以跳过)
+=======================+
index = currententity->curstate.body / pbodypart->base;
index = index % pbodypart->nummodels;
psubmodel = (mstudiomodel_t *)((byte *)pstudiohdr + pbodypart->modelindex) + index;
+=======================+
引擎使用特定的算法与实体的body属性运算得到每个Part需要绘制哪个Sub-model
因此我们只需要推算出body是多少,就可以完成上述需求。
人工计算太过繁琐,所以我编写了一个函数用来推算这个值:
代码:http://git.oschina.net/crsky/codes/9rhgp13ta2cd5bvlsmn0o71
函数返回值直接用作实体body属性即可。

并且每个Part里还可以有多个Sub-model,例如:

我们知道实体有一个body变量可以用来决定需要显示的Sub-model,
典型的例子就是武器模型多手臂,我们把实体的body设为0就会显示1号Sub-model了,
====================================
我们有一个模型,它有2个Part,
这两个Part里分别有2个Sub-model,
假如我们要同时显示“1号Part的2号Sub-model”和“2号Part的1号Sub-model”,
但根据上文介绍,实体只有一个body变量,我们怎么决定每个Part的Sub-model呢?
观察一段绘制模型的代码:(看不懂可以跳过)
+=======================+
index = currententity->curstate.body / pbodypart->base;
index = index % pbodypart->nummodels;
psubmodel = (mstudiomodel_t *)((byte *)pstudiohdr + pbodypart->modelindex) + index;
+=======================+
引擎使用特定的算法与实体的body属性运算得到每个Part需要绘制哪个Sub-model
因此我们只需要推算出body是多少,就可以完成上述需求。
人工计算太过繁琐,所以我编写了一个函数用来推算这个值:
代码:http://git.oschina.net/crsky/codes/9rhgp13ta2cd5bvlsmn0o71
函数返回值直接用作实体body属性即可。
