哎,苦于良师益友难寻觅啊。threejs人太少了。
原出处:
https://github.com/mrdoob/three.js/wiki/JSON-Model-format-3
虽然format3即将被淘汰了,format4格式更加规范。因为手头上的工程还是用format3格式。浅谈一下对format3格式的编码理解。
二进制编码方式:
00 00 00 00 = TRIANGLE
00 00 00 01 = QUAD
00 00 00 10 = FACE_MATERIAL
00 00 01 00 = FACE_UV
00 00 10 00 = FACE_VERTEX_UV
00 01 00 00 = FACE_NORMAL
00 10 00 00 = FACE_VERTEX_NORMAL
01 00 00 00 = FACE_COLOR
10 00 00 00 = FACE_VERTEX_COLOR
0是三角形;1是四边形;2是面带有法向量,以此类推
数组索引确定编码内容,那么数组下标怎么确定呢?
三角形 : 3个下标;
四边形 : 4个下标;
面-材料 : 1个下标;
面-uvs : 1个下标;
面-点-uvs :3个或4个下标;(我也不清楚怎么判断3还是4)
面-法向量 :1个下标;
面-点-法向量 : 3个或4个下标;
面-颜色 : 1个下标;
面-点-颜色: 3个或者4个下标
比如:
42, 0,1,2, 0, 0,1,2, 0,1,2,
首位 42 = 00 10 01 10 = 四叉树 + 面带曲面 + vertex_uv + vertex_normal
很惊奇发现一个(可能的)bug:
three.js源码第12028和12087行附近,jsonloader对象中,少写了
hasFaceUv = isBitSet( type, 2 );