Skip to content

建模(Blender) ​

示例车的 examples/blender/whitebox_coupe.blend 就是按下面的约定搭的,可以打开对照。

集合 ​

每个网格一个集合,集合名就是网格名:

集合内容贴图
<名字>车身外部:车身、车门、加油口盖、尾灯、后风挡<名字>.png
<名字>_front车头:前脸、引擎盖、前风挡、大灯、转向灯<名字>.png
<名字>_wheel一个右侧车轮,轮毂中心在原点,外侧朝 +X<名字>.png
<名字>_cab驾驶室:仪表台、方向盘、换挡杆、仪表<名字>_cab.png
<名字>_seat座椅<名字>_cab.png
<名字>_engine(可选)发动机舱,引擎盖打开才画<名字>_under.png
<名字>_chassis(可选)底盘<名字>_under.png

没有的集合就不画。车轮只做一个,Vettura 会按 VehicleSpec 的轮距、轴距和轮胎半径放到四个位置,左边的转 180°。

骨骼:用空物体(Empty) ​

会动的部件挂在一个空物体下面:空物体放在转轴上,名字是 Vettura 认识的骨骼名;网格物体以它为父级。没有父级的网格属于 body(不动)。

骨骼名怎么动放在哪个集合
door_l door_r绕竖直轴向外开(铰链在车门前缘)<名字>
hood绕横轴向上掀(铰链在引擎盖后缘)<名字>_front
fuel_door加油口盖,绕竖直轴(左侧,铰链在前缘)<名字>
tailgate皮卡尾门,绕横轴向下<名字>
wheel车轮(原点)<名字>_wheel
steering方向盘,绕转向柱<名字>_cab
shift换挡杆,绕防尘套顶部摆动<名字>_cab
transfer分动箱杆(只有四驱车)<名字>_cab
tach speedo fuel_gauge temp_gauge仪表指针,绕垂直于仪表盘的轴(指针零位朝上)<名字>_cab
wiper_l wiper_r雨刮(臂,用姿态表时刮片可以单独做成 wiper_l_blade wiper_r_blade)<名字>_front

T15 还有 wiper_stalk、turn_stalk、light_knob、visor_l/r、glovebox、ashtray、key、hvac_*,新车可以不做。

部件:物体名决定怎么画 ​

一个网格物体就是一个部件,名字写成 <骨骼>_<内容>,例如 door_l_paint、body_glass_front、wheel_tire。名字的结尾决定画法:

结尾画法
_paint车漆主色(玩家选的颜色乘到贴图上,贴图这部分画浅灰或白色)
_paint2车漆副色(双色车)
_lamp_low _lamp_high近光、远光,开灯时发光
_lamp_park_l _lamp_park_r示廓灯
_amber_l _amber_r左、右转向灯
_lamp_tail _lamp_reverse _lamp_plate _lamp_dome尾灯、倒车灯、牌照灯、顶灯
_dial _needle仪表盘和指针,通电时发光
_tire轮胎(爆胎时压扁)
名字含 glass半透明玻璃

损伤系统认这四块玻璃:body_glass_front(前风挡)、body_glass_rear(后风挡)、door_l_glass、door_r_glass。名字对上才会碎。印在玻璃上的东西(加热丝、贴纸)单独做一个部件,名字是玻璃名加 _decal(例如 body_glass_rear_decal):按贴花画(不是半透明玻璃),玻璃碎了它一起消失。这四块玻璃下雨时也会挂水:Vettura 按网格自动算出玻璃的形状和弧度,前风挡上雨刮(wiper_l、wiper_r;有 wiper_l_blade 这类刮片骨骼就按刮片算)扫过的地方会被刮干净,不用另外配置。

同一骨骼下同名的多个物体会合并成一个部件(Blender 自动加的 .001 导出时去掉),例如四个尾灯都叫 body_lamp_tail。

尺寸和面数 ​

  • 1 米 = 1 格,按真实尺寸做。白模跑车是 4.70 × 1.85 × 1.32 米。
  • 网格最终会转成三角形;面积为零的三角形会被丢掉。
  • 光滑:导出按 50° 折角自动分组,硬边不用手动标。
  • 每个网格文件的上限(Vextris 0.1.1 起):262144 个三角形、786432 个顶点、512 个部件、64 MiB 的 JSON。超了整份网格不加载,那部分车身就看不见;导出脚本超限时会打印 WARNING。
  • 不要为了省面数对整车统一减面:大面板会被压皱,格栅会碎成三角形。外观部分保持原网格,只压看不清的地方(发动机、底盘)。高精度的车,单个外部网格十几万个三角形是可以的。