模型规范
通用规范
1、模型的轴心点在底部中心位置,Y轴必须朝上。
2、模型的位置为[0,0,0],旋转为[0,0,0],缩放为[1,1,1]。
3、任何节点都不应该被缩放,缩放恒为[1,1,1]。
4、能合并的网格和材质尽量合并,该要点对性能优化极为重要。
5、贴图仅支持.jpg和.png格式,大小必须为2的n次幂大小,比如128、256、512、1024等,长宽可以不等。贴图无需透明通道时尽量使用.jpg格式,减小资源文件大小。
6、使用贴图表现模型细节,比如金属度、凹凸感、阴影等,其中阴影贴图可以合并到漫反射贴图中。
7、仅对需要双面显示的模型设置为双面,否则一律设置为单面。
8、重复模型一律需要进行单体化,特例除外。
9、模型必须导出成.glb格式,请勿对.glb进行优化压缩。
巡检角色模型
巡检角色模型是一个包含2个动画的模型。
预备(站立)动画,固定命名为
idle
原地行走动画,固定命名为
walk
门窗模型
1、门模型有2个动画,即开门动画和关门动画,固定命名为“open”和“close”,推荐使用关键帧动画而非骨骼动画,因为骨骼动画无法被优化。
2、窗户与门一致,但大多数情况下,窗口并不需要动画。
3、冷通道门与门模型保持一致,具有开关门动画。
4、门窗的资源类型为“门”,可自动吸附到墙体;冷通道门的资源类型为“物体”。
资产模型规范
机柜
1、机柜模型的规格大小必须精确,与实物一致。
2、机柜模型有2个动画,与门模型保存一致,参考 【门窗模型】 。
3、机柜模型有前、后2个挂接点,用来挂载架式设备,挂接点用空节点来表示。前挂接点位于前面两U位立柱的底部中心位置,固定命名为“point_front”。后挂接点位于后面两U位立柱的底部中心位置,固定命名为“point_back”。
架式设备
架式设备模型不需要单独建模,而是通过3D客户端后台管理的配置工具自动生成。
板卡设备
板卡设备模型不需要单独建模,而是通过3D客户端后台管理的配置工具自动生成。
档案库房模型规范
单体化
一组区列密集架由 1个左门板+1个右门板+1个固定列+n个活动列
组成,因此需要建模 左门板、右门板、固定列、活动列
共4个模型。有了模型,就可以在3D场景编辑器中进行组合还原区列密集架。
在3D场景编辑器中,列模型必须用编号命名,对应档案库房管理系统中的编号,用于建立模型与数据的关联
。列的编号遵循从左往右编号,从1开始,比如1、2、3、4、5。
在3D场景编辑器中,门板模型必须命名为“门”
。
在3D编辑器中,区列密集架必须全部选中,并打组,使之成为一个整体,组名称必须命名为“密集架”
。
正方向
约定,带屏显或手摇把手的一面为正方向,如图所示。
温馨提示
请不要对
单个列和门板
进行旋转、缩放
操作。如需旋转、缩放
,应该对组
操作。请不要手动对齐模型,而应该使用对齐工具中的
水平对齐
。具体操作是,先选中组包含的所有模型,激活对齐工具,点击对齐工具中的水平对齐
。如果仍未对齐,此时可以手动微调。
层位
层位的命名规范与档案库房业务系统中的命名规范息息相关,不同厂家的规范可能并不一样。
列的节号描述
密集架列可能存在多节,约定节号命名从数字1开始
,如1、2、3、4、5等。这里还存在两种情况,有的厂家不区分左右面,有的厂家区分左右面,我们分开描述。
①不区分左右面
约定先命名左面(如果存在),再命名右面(如果存在)
,因此左右面的节号是不相同的。约定左面遵循从右往左顺序,右面遵循从左往右顺序
。举例:如果左面节号为1、2、3,那么右面就是4、5、6。以自身业务系统命名规范为准,这里提供的约定仅供参考。
②区分左右面
约定以靠近正前方的屏幕或者手摇把手侧为起始节号1
,左右面的节号可以重复,比如左右面都可以有节号1、2、3、4、5。以自身业务系统命名规范为准,这里提供的约定仅供参考。
列的层号描述
密集架列可能存在多层,约定层号命名从数字1开始
,如1、2、3等。约定层号遵循从下往上的顺序
。层号跟列的面类型无关,因此左右面的层号是相同的
,这一点跟节号是不同的。以自身业务系统命名规范为准,这里提供的约定仅供参考。
层位描述
层位是指由节和层分割出来的格子,档案盒(含无盒档案)就摆放在层位中。约定层位用一个完全透明的盒子来表示,缩放为1,盒子深度为20cm
,盒子周围应留有一定间隙。约定档案盒的摆放顺序为:左面层位遵循从右往左(透明盒子的轴心点位于底部右侧中心),右面层位遵循从左往右(透明盒子的轴心点位于底部左侧中心)
。
层位的命名需要根据节号是否区分左右面进行分开描述。
①节号不区分左右面
层位的命名格式为“grid_节号_层号”
,例如“grid_1_2”表示1节2层。层位的命名必须严格遵循规范,这样才能与档案库房管理系统中的数据对应起来
。
②节号区分左右面
层位的命名格式为“grid_节号_层号_面号”,约定面号1表示左侧,2表示右侧
,例如“grid_1_2_1”表示左侧1节2层。层位的命名必须严格遵循规范,这样才能与档案库房管理系统中的数据对应起来
。
档案盒
档案盒模型不需要单独建模,而是通过3D客户端后台管理的配置工具自动生成。
无盒档案
无盒档案不需要单独建模,用一个随机颜色的薄盒子(约定1cm厚)表示。
导轨、门口机
与普通模型一样,单独导出一个模型即可。
贴图动画制作规范
目前,贴图动画制作还没有配套的可视化工具,需要手动操作,后面我们会开发相关制作工具。操作流程如下:
导出gltf
为了制作贴图动画,需要修改gltf的内容,因此需要先导出gltf,而不是导出glb。
修改gltf
gltf包含若干个资源文件,我们需要修改的是 .gltf
文件。.gltf
文件内容实际上是 JSON文本
,为了更好的修改,我们推荐先把其扩展名改为 .json
,然后使用 vsCode
编辑器(vsCode有高亮和错误提示)打开修改,修改完毕后再将其扩展名改回原来的 .gltf
。
用 vsCode
打开json文件,可以看到整个文本内容是在一对大括号 {}
内部。一个大括号 {}
表示一个JSON对象,用键值对来描述对象的属性,其中值可能包含嵌套的JSON对象。把鼠标移动到左侧行号处,会显示向下箭头,点击箭头可以折叠或显示值内容。
我们关注的节点有 materials
、 textures
、 images
。它们的值都是由一对中括号 []
组成,表示数组,内部是若干个嵌套的JSON对象。
materials
:材质数组,一个嵌套的JSON对象表示一个材质对象,内部又嵌套了若干对象。我们关注的是xxxxxxTexture
,表示各种类型的贴图,比如baseColorTexture
表示漫反射贴图。我们要修改的就是xxxxxxTexture
的内容,更多时候我们只在漫反射贴图上使用动画,因此需要修改baseColorTexture
。xxxxxxTexture
内部也是一个JSON对象,index
的值是一个索引数值,指向textures
数组中的对应索引处的元素。textures
:贴图数组,一个嵌套的JSON对象表示一个贴图对象,其中的source
的值是一个索引数值,指向images
数组中的对应索引处的元素。images
:图片资源数组,一个嵌套的JSON对象表示一个图片对象。
提示
JSON数组中的索引是从 0
开始编号的,而不是 1
。
目前我们支持的贴图动画类型有 滚动动画
和 序列帧动画
。
滚动动画
滚动动画是指贴图在 U
或者 V
方向匀速移动,适宜做飞线动画、水流动画、建筑流光动画、道路车流动画、扫光动画等。这里以一个漫反射贴图 baseColorTexture
例子来说明。
原始的 baseColorTexture
的值为:
json
{
"index": 0,
"texCoord": 0
}
我们给它加上 extensions
扩展节点,如下所示:
json
{
"index": 0,
"texCoord": 0,
"extensions": {
"textureExtensions": [
{
"index": 0,
"texCoord": 0,
"extensions": {
"scrollAnim": [
0,
0.3
]
}
}
]
}
}
注意:键值对之间有英文逗号 ,
隔开。
其中的 scrollAnim
是一个数组,包含2个数值元素,表示滚动动画在 U
和 V
方向上的速度。数值可正、可负,也可为0。为0表示不滚动。其它键值对为保留属性,不用管,默认值即可。
序列帧动画
序列帧动画类似GIF动画,通过循环切换显示的图片片段来达到动画效果。这里切换显示的是图片片段,因此需要对贴图进行切片。贴图是一张包含所有切片的大图,切片与切片之间紧挨在一起,通过切片参数来分割。这里以一个漫反射贴图 baseColorTexture
例子来说明。
原始的 baseColorTexture
的值为:
json
{
"index": 0,
"texCoord": 0
}
我们给它加上 extensions
扩展节点,如下所示:
json
{
"index": 0,
"texCoord": 0,
"extensions": {
"textureExtensions": [
{
"index": 0,
"texCoord": 0,
"extensions": {
"multiFramesAnim": {
"animSpeed": 8,
"tilesX": 9,
"tilesY": 5
}
}
}
]
}
}
注意:键值对之间有英文逗号 ,
隔开。
其中的 multiFramesAnim
表示序列帧动画对象。 animSpeed
表示切换的速度,值必须大于0,可以有小数; tilesX
表示贴图在X轴方向切片的数量,必须为正整数; tilesY
表示贴图在Y轴方向切片的数量,必须为正整数。
示例贴图如下所示:
gltf转glb
修改好内容后保存,并将扩展名改回 .gltf
。点击 这里 打开 GLTF转GLTF
页面,按要求拖拽gltf资源文件到虚线框,将自动转换并保存 .glb
文件,如下图所示。