extends MeshInstance3D
func _process(delta: float) -> void:
rotate_y(0.1*delta)
func _ready() -> void:
var file = FileAccess.open("res://kas00.emp", FileAccess.READ)
if file == null:
push_error("Failed to open the xpr file!")
return
# Read the entire file into a PackedByteArray
var data = file.get_buffer(file.get_length())
file.close()
var bf = StreamPeerBuffer.new()
bf.data_array = data
bf.seek(0)
var dwChunkId = bf.get_32()
var dwMDLSize = bf.get_32()
var dwMDLMagic = bf.get_string(4)
var dwNumObj = bf.get_32()
var dwNumTxt = bf.get_32()
var _dwUnk0 = bf.get_32()
var dwNumIVBuf = bf.get_32()
print("dwChunkId: %d, dwMDLSize: %x, Obj: %d, Txt: %d, IVBuf: %d, Magic: %s"%[dwChunkId, dwMDLSize, dwNumObj, dwNumTxt, dwNumIVBuf, dwMDLMagic])
if dwMDLMagic != 'MDL' or dwChunkId != 1:
print("is not emp")
return
var ObjOffsets = []
for i in range(dwNumObj):
ObjOffsets.append(bf.get_32())
#Get file structure block offsets
var offverts = []
var offimgs = []
var chunkbase = dwMDLSize + 0x10
while true:
bf.seek(chunkbase - 8)
var chunkid = bf.get_32()
var chunksize = bf.get_32()
if chunkid == 2:
offverts.append(chunkbase + 0xc)
elif chunkid == 3:
var _mipmaps = bf.get_32()
var txMagic = bf.get_32()
bf.seek(chunkbase+0x14+8)
var sizeX = bf.get_32()
var sizeY = bf.get_32()
var doafmt = {0x31545844:0xC, 0x34545844:0xF, 0x15:6, 0x3C:0x28}[txMagic]
#print([mipmaps,doafmt, sizeX, sizeY])
offimgs.append([44+chunkbase, sizeX, sizeY, doafmt])
elif chunkid == 4:
break
chunkbase += chunksize+8
var gtextures = []
gtextures.resize(dwNumTxt)
gtextures.fill(0)
var imgCount = -1
for offimg in offimgs:
imgCount += 1
var texoffset = offimg[0]
var sizeX = offimg[1]
var sizeY = offimg[2]
var doafmt = offimg[3]
var transparency = false
if doafmt == 6 or doafmt == 0xF:
transparency = true
var bpp = {6:4, 0x28:2, 0x19:1, 0xC:0.5, 0xF:1}[doafmt] #
var noMipSize = int(sizeX*sizeY*bpp)
#make dds caption
var ddsCap = []# + [0]*(32-6)
ddsCap.resize(32-6)
ddsCap.fill(0)
ddsCap = [0x20534444, 0x7C, 0x81007, sizeY, sizeX, noMipSize] + ddsCap
ddsCap[19] = 0x20
ddsCap[20] = {6:0x41, 0x19:2, 0x28:0x20001}.get(doafmt,4)
ddsCap[21] = {0xc:0x31545844, 0xf:0x35545844}.get(doafmt,0)#fourcc
ddsCap[27] = 0x1000
if doafmt == 6:
ddsCap[22] = 0x20
ddsCap[23] = 0xFF0000
ddsCap[24] = 0xFF00
ddsCap[25] = 0xFF
ddsCap[26] = 0xFF000000
elif doafmt == 0x28:
ddsCap[22] = 0x10
ddsCap[23] = 0xFF
ddsCap[26] = 0xFF00
elif doafmt == 0x19:
ddsCap[22] = 8
ddsCap[26] = 0xFF
var ddsCapBuffer = StreamPeerBuffer.new()
for ddsnum in ddsCap:
ddsCapBuffer.put_32(ddsnum)
ddsCapBuffer.seek(0)
# supported d3d types: 6-ARGB32 28-GB16 19-A8 C-DXT1 F-DXT5
var ddsData: PackedByteArray = ddsCapBuffer.get_data(ddsCapBuffer.get_available_bytes())[1] + data.slice(texoffset, texoffset + noMipSize)
var image = Image.new()
var err = image.load_dds_from_buffer(ddsData)
if err != OK:
push_error("DDS loading failed")
else:
var texture: Texture2D = ImageTexture.create_from_image(image)
gtextures[imgCount] = [transparency, texture]
var gobjects = []
var vertscounter = 0
for objidx in range(dwNumObj):
var objhastransparency = false
var objbase = ObjOffsets[objidx] - 0xc
bf.seek(objbase)
var _dwOBJMagic = bf.get_string(4)
var dwWeight = bf.get_32()
#print(dwOBJMagic)
var buffslots = [[], [], [], []]
for bufslotidx in range(4):
bf.seek(objbase+0x20 + bufslotidx*0x10)
var dwNumVertices = bf.get_32()
var dwVBufOffset = bf.get_32()
var dwNumIndices = bf.get_32()
var dwIBufOffset = bf.get_32()
if dwNumVertices == 0:
continue
#print([dwNumVertices, dwVBufOffset, dwNumIndices, dwIBufOffset])
dwVBufOffset = offverts[vertscounter]
vertscounter += 1
dwIBufOffset -= 0xc
bf.seek(dwIBufOffset-4)
var verts = []
var normals = []
var indices = []
var uvs = []
var diffuses = []
var weights = []
var uvs0 = []
bf.seek(dwIBufOffset)
for i in range(dwNumIndices):
indices.append(bf.get_16())
#read all 4 vertex buffers before proceeding to materials
bf.seek(dwVBufOffset)
for vtx in range(dwNumVertices):
verts.append(Vector3(bf.get_float(), bf.get_float(), bf.get_float()))
if dwWeight:
var weightlayers = []
for i in range(dwWeight):
weightlayers.append(bf.get_float())
weights.append(weightlayers)
if bufslotidx == 0:#x20
normals.append(Vector3(bf.get_float(), bf.get_float(), bf.get_float()))
uvs.append(Vector2(bf.get_float(), bf.get_float()))
elif bufslotidx == 1:#x18
diffuses.append(bf.get_float())
uvs.append(Vector2(bf.get_float(), bf.get_float()))
elif bufslotidx == 2:#x28
normals.append(Vector3(bf.get_float(), bf.get_float(), bf.get_float()))
uvs.append(Vector2(bf.get_float(), bf.get_float()))
uvs0.append(Vector2(bf.get_float(), bf.get_float()))
elif bufslotidx == 3:#x20
diffuses.append(bf.get_float())
uvs.append(Vector2(bf.get_float(), bf.get_float()))
uvs0.append(Vector2(bf.get_float(), bf.get_float()))
if bufslotidx == 0:
buffslots[0] = {'indices':indices, 'verts':verts, 'normals':normals, 'uvs':uvs}
elif bufslotidx == 1:
buffslots[1] = {'indices':indices, 'verts':verts, 'diffuses':diffuses, 'uvs':uvs}
elif bufslotidx == 2:
buffslots[2] = {'indices':indices, 'verts':verts, 'normals':normals, 'uvs':uvs, 'uvs2':uvs0}
elif bufslotidx == 3:
buffslots[3] = {'indices':indices, 'verts':verts, 'diffuses':diffuses, 'uvs':uvs, 'uvs2':uvs0}
if dwWeight:
buffslots[bufslotidx]['weights'] = weights
#print(objidx)
var matbase = objbase +0xa0
var mesh_data = ArrayMesh.new() #godot mesh
var matindex = -1
while true:
matindex += 1
bf.seek(matbase)
var matid = bf.get_32()
if matid == 0:
break
var matsize = bf.get_32()
var _unkmat = bf.get_32()
var cullingflags = bf.get_32()
var bounding_sphere = [bf.get_float(), bf.get_float(), bf.get_float(), bf.get_float()]
var diffuse = Color(bf.get_float(), bf.get_float(), bf.get_float(), bf.get_float())
var ambient = Color(bf.get_float(), bf.get_float(), bf.get_float(), bf.get_float())
var specular = Color(bf.get_float(), bf.get_float(), bf.get_float(), bf.get_float())
var emisive = Color(bf.get_float(), bf.get_float(), bf.get_float(), bf.get_float())
var glow = bf.get_float()
var texturesnum = bf.get_32()
#print([matid, _unkmat, cullingflags])
bf.seek(matbase + matsize - 0x10)
var vsize = bf.get_16()
var usedvbufslot = bf.get_16()
var facestart = bf.get_32()
var facecount = bf.get_32()
var indexsize = bf.get_32()
var matindices = buffslots[usedvbufslot]['indices'].slice(facestart, facestart+facecount+2)
## reduce all the lists only to vertices represented in the indices
var index_map = {}
var xindices = PackedInt32Array()
var xverts = PackedVector3Array()
var xnormals = PackedVector3Array()
var xuvs = PackedVector2Array()
#trim arrays to material indices only
for old_index in matindices:
if not index_map.has(old_index):
index_map[old_index] = xverts.size()
xverts.append(buffslots[usedvbufslot]['verts'][old_index])
xnormals.append(buffslots[usedvbufslot]['normals'][old_index])
xuvs.append(buffslots[usedvbufslot]['uvs'][old_index])
for old_index in matindices:
xindices.append(index_map[old_index])
#xindices = PackedInt32Array([xindices[0]]) + xindices #dublicate first index in tristrip, to fix the ccw winding
#the blend shapes require triangles, so the cw winding can be switched in there
var xfaces = PackedInt32Array()
for idx in range(xindices.size()-2):
var a; var b; var c
if idx % 2:
a = xindices[idx]
b = xindices[idx + 1]
c = xindices[idx + 2]
else:
b = xindices[idx]
a = xindices[idx + 1]
c = xindices[idx + 2]
if a==b or b==c or c==a:
continue
xfaces.append_array([a,b,c])
var material = StandardMaterial3D.new()
material.albedo_color = diffuse
material.roughness = clamp(1.0 - (glow/100), 0.0, 1.0)
#material.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
#material.cull_mode = BaseMaterial3D.CULL_FRONT
#if cullingflags > 1:
#material.cull_mode = BaseMaterial3D.CULL_DISABLED
for tx in range(texturesnum):
bf.seek(matbase + 0x70 + tx*0x10)
var txid = bf.get_32()
var unk0 = bf.get_32()
var unk1 = bf.get_32()
var txflags = bf.get_32()
if (txid != 0x888):# and gtextures[txid] != 0: # (and txid < len(textures)
material.albedo_texture = gtextures[txid][1]
if matid & 1 and gtextures[txid][0] == true:
objhastransparency = true
material.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA
#material.blend_mode = BaseMaterial3D.BLEND_MODE_MIX
material.render_priority = matindex
#material.depth_draw_mode = BaseMaterial3D.DEPTH_DRAW_ALWAYS
#material.alpha_scissor_threshold = .5
#else:
#pass
#material.albedo_color = specular
matbase += matsize
var surface_array = []
surface_array.resize(Mesh.ARRAY_MAX)
surface_array[Mesh.ARRAY_VERTEX] = xverts
surface_array[Mesh.ARRAY_NORMAL] = xnormals
surface_array[Mesh.ARRAY_TEX_UV] = xuvs
#surface_array[Mesh.ARRAY_INDEX] = xindices
surface_array[Mesh.ARRAY_INDEX] = xfaces
#mesh_data.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLE_STRIP, surface_array)
mesh_data.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, surface_array)
mesh_data.surface_set_material(mesh_data.get_surface_count()-1, material)
var mesh_instance = MeshInstance3D.new()
mesh_instance.mesh = mesh_data
if objhastransparency:
mesh_instance.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF
add_child(mesh_instance)
gobjects.append(mesh_instance)
#try to reposition test
#for ii in gobjects.size():
#gobjects[ii].global_transform.origin = Vector3(float(ii/11.2), 0, 0)
var bonesNames = ["Chest", "Head", "Hips", "LeftFoot", "LeftForeArm", "LeftHand", "LeftUpLeg", "LeftLeg",
"LeftArm", "RightFoot", "RightForeArm", "RightHand", "RightUpLeg", "RightLeg", "RightArm", "Unknown0",
"LeftArm", "LeftEyeBall", "LeftFoot", "Head", "RightArm", "RightEyeBall", "RightFoot", "Chest",
"LeftWingBase", "LeftWingMid", "LeftWingTip", "RightWingBase", "RightWingMid", "RightWingTip"]#messed up for doax rig
var bonesHierarchy = [0x17, 0x13, -1, 7, 8, 4, 2, 6, 0x10, 0xd, 0xe, 0xa, 2, 0xc, 0x14, -1, 0, 1, 3, 0, 0, 1, 9, 2, 0, 0x18, 0x19, 0, 0x1b, 0x1c]
var bonesDoa3Parents = [2, 0, -1, 7, 8, 4, 2, 6, 0, 0xd, 0xe, 0xa, 2, 0xc, 0, -1, -1, 1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1]
var bonesById = [2, 6,7,3, 0xc,0xd,9, 0, 1,0x11,0x15, 8,4,5, 0xe,0xa,0xb]
var boneTails = [0, 7,3,-1, 0xd,9,-1, 1, -1,-1,-1, 4,5,-1, 0xa,0xb,-1]
#find in cat body parts, go through hierarchy, and multiply the skeleton positions
var cfile = FileAccess.open("res://kas00.cat", FileAccess.READ)
if cfile == null:
push_error("Failed to open the cat file!")
return
# Read the entire file into a PackedByteArray
var cdata = cfile.get_buffer(cfile.get_length())
cfile.close()
var cbf = StreamPeerBuffer.new()
cbf.data_array = cdata
cbf.seek(0)
var bones2OBJs = []
var hasLowPoly = false
var catheader = cbf.get_32()
if catheader != 0x20:
print('wrong cat header')
else:
var savedOffset = 0x14
var version = 1
while true:
cbf.seek(savedOffset)
var pair1 = cbf.get_32()
var pair2 = cbf.get_32()
savedOffset = cbf.get_position()
if pair1 == 0: break
elif pair2 == -1:
if pair1 != 2: version = 3
else: version = 2
elif (version != 1 and (pair2 == 1 or pair2 == 9)) or (version == 1 and pair1 == 4): #doau low'n'high poly + doax low'n'high poly
cbf.seek(pair1 + 0x14)
if version == 1:
cbf.seek(pair2 + 0x14)
while true:
if cbf.get_u8() == 0xfe: break
var bobj = cbf.get_u8()
var c = 0
while bobj != 0xfe:
if bobj != 0xff:
bones2OBJs.append([5, c, bobj])
c += 1
bobj = cbf.get_u8()
bobj = cbf.get_u8()
while bobj != 0xfe: bobj = cbf.get_u8()
while true:
var hasSpecialBone = false
var specialBone
var bid = cbf.get_u8()
var bbone = cbf.get_u8()
var bobj = cbf.get_u8()
if bid == 0: break
elif bid == 1:
hasSpecialBone = true
specialBone = bbone
bbone = {0x80:4, 0x81:0xa, 0x86:8, 0x87:0xe, 0x8b:0x19, 0x8c:0x1a, 0x8e:0x1c, 0x8f:0x1d}.get(bbone, bbone)#"special bones?"
elif bid == 2:
hasSpecialBone = true
specialBone = bbone
bbone = {0:0x17, 2:0x10, 3:0x14, 7:0xc, 8:7, 9:0xd, 0xa:0, 0xb:2, 0xc:0, 0xd:0, 0xe:2, 0xf:0x13}.get(bbone, bbone) #6 is 6 #doax bones
elif bid == 0xa:
cbf.seek(cbf.get_position() - 1)
continue
elif bid == 0xb:
cbf.seek(cbf.get_position() - 2)
continue
else: continue
if pair2 == 9:
bid = 4
hasLowPoly = true
if hasSpecialBone: bones2OBJs.append([bid, bbone, bobj, specialBone])
else: bones2OBJs.append([bid, bbone, bobj])
elif version != 1 and pair2 == 5: #doau shadow shapes
cbf.seek(pair1 + 0x14)
if cbf.get_u8() == 0xF0:
for i in range(0xf):
bones2OBJs.append([5, i, cbf.get_u8()])
print(bones2OBJs)
#go for the joints
cbf.seek(16) #go to joints offset
var joints_offset = cbf.get_u32()
if joints_offset != 0:
cbf.seek(joints_offset) #go to joints offset
var joints = []
var joint = cbf.get_u32()
while joint != 0:
joints.append(joint)
joint = cbf.get_u32()
for i in range(len(joints)):
if joints[i] < 4: continue
cbf.seek(joints[i] + joints_offset + 8)
var jointObj = cbf.get_u8()
var jointBone = cbf.get_u8()
var jointBone2 = cbf.get_u8()
if jointBone > 0x17: continue
#print("OBJ_%x B1_%x B2%x"% (jointObj, jointBone, jointBone2))
bones2OBJs.append([3, jointBone, jointObj])
#put lod at -1, and shadow at +1
var mskeleton = get_skeleton('kas.doau')
for bb in bones2OBJs:
var body = bb[0]
var limb = bb[1]
var bobj = bb[2]
var bxyz = Vector3(0,0,0)
if body == 4:
bxyz[0] = -1.3
elif body == 5:
bxyz[0] = 1.3
else:
bxyz[2] = -.5
while limb != -1:
#print(mskeleton[limb])
bxyz += Vector3(mskeleton[limb][0], mskeleton[limb][1], mskeleton[limb][2])
limb = bonesHierarchy[limb]
gobjects[bobj].global_transform.origin = bxyz
#elif version != 1 and pair2 == 8: #built in skeleton
#print("found skeleton in cat")
#hasEmbededSkeleton = True
#f.seek(pair1 + 0x14)
#for i in range(0x18):
#bonesXYZ.append(struct.unpack("<3f", f.read(12)))
#tempb = f.read(4)
#elif version != 1 and pair2 == 6: #apa module
#infosbase = 0x14
#apamagic, apacount, handsoffset, eyesoffset, mouthoffset = fread(infosbase + pair1, "4s4L")#apacount is always 3
#for enum, apaoffset in enumerate([handsoffset, eyesoffset, mouthoffset]):
#if apaoffset != 0:
#mcount, moffset, acount, aoffset, targets = fread(infosbase + apaoffset, "5L")
#mlist = freadfixed(infosbase + moffset, "BB", mcount)
#if acount == 0: handsanim = []
#else: #complex animations composed from 2 or 3 morph targets
#alist = freadfixed(infosbase + aoffset, "LL", acount)#alist[someid, offset]
#handsanim = freadterminated(alist[-1][1] + infosbase, "BBBB", (0xFF,0,0,0))
#handsanim = [ [ha[i+2]for i in range(ha[1])]+[ha[0]] for ha in handsanim]#convert from format [t1,count,t2,t3] to [t2,t3,t1]
### for mid, mtarget in mlist:
### pass
##to do collect from handsanim and mlist to one list
#
#apadata.append((mlist, handsanim))
#else:
#apadata.append(())#add empty to preserve the order
func get_skeleton(cname:String):
var skeletons = {"aya.doa3":[[0,0.18,0.0049], [0,0.2875,-0.03], [0,0,0], [0,-0.4199,0], [0.2397,0,0], [0.2397,0,0], [0.0761,-0.0205,-0.0257], [0,-0.4033,0], [0.1206,0.221,-0.0235], [0,-0.4199,0], [-0.2397,0,0], [-0.2397,0,0], [-0.0761,-0.0205,-0.0257], [0,-0.4033,0], [-0.1206,0.221,-0.0235], [0,0,0], [0,0,0], [0.0295,0.1102,0.0759], [0,0,0], [0,0,0], [0,0,0], [-0.0295,0.1102,0.0759], [0,0,0], [0,0,0]],
"aya.doau":[[0,0.18,0.0049], [0,0.2875,-0.03], [0,0,0], [0,-0.4199,0], [0.2397,0,0], [0.2397,0,0], [0.0761,-0.0205,-0.0257], [0,-0.4033,0], [0.1206,0.221,-0.0235], [0,-0.4199,0], [-0.2397,0,0], [-0.2397,0,0], [-0.0761,-0.0205,-0.0257], [0,-0.4033,0], [-0.1206,0.221,-0.0235], [0,0,0], [0,0,0], [0.0295,0.1102,0.0759], [0,0,0], [0,0,0], [0,0,0], [-0.0295,0.1102,0.0759], [0,0,0], [0,0,0]],
"bas.doa3":[[0,0.2338,-0.006], [0,0.269,-0.0339], [0,0,0], [0,-0.455,0], [0.2743,0,0], [0.2743,0,0], [0.0802,-0.0173,-0.0271], [0,-0.455,0], [0.2132,0.25,-0.0185], [0,-0.455,0], [-0.2743,0,0], [-0.2743,0,0], [-0.0802,-0.0173,-0.0271], [0,-0.455,0], [-0.2132,0.25,-0.0185], [0,0,0], [0,0,0], [0.032,0.2197,0.1168], [0,0,0], [0,0,0], [0,0,0], [-0.032,0.2197,0.1168], [0,0,0], [0,0,0]],
"bas.doau":[[0,0.2338,-0.006], [0,0.269,-0.0339], [0,0,0], [0,-0.455,0], [0.2743,0,0], [0.2743,0,0], [0.0802,-0.0173,-0.0271], [0,-0.455,0], [0.2132,0.25,-0.0185], [0,-0.455,0], [-0.2743,0,0], [-0.2743,0,0], [-0.0802,-0.0173,-0.0271], [0,-0.455,0], [-0.2132,0.25,-0.0185], [0,0,0], [0,0,0], [0.032,0.2197,0.1168], [0,0,0], [0,0,0], [0,0,0], [-0.032,0.2197,0.1168], [0,0,0], [0,0,0]],
"bay.doa3":[[0,0.2338,-0.006], [0,0.36,0], [0,0,0], [0,-0.455,0], [0.2743,0,0], [0.2743,0,0], [0.0802,-0.0173,-0.0271], [0,-0.455,0], [0.2132,0.25,-0.0185], [0,-0.455,0], [-0.2743,0,0], [-0.2743,0,0], [-0.0802,-0.0173,-0.0271], [0,-0.455,0], [-0.2132,0.25,-0.0185], [0,0,0], [0,0,0], [0.0333,0.1128,0.0805], [0,0,0], [0,0,0], [0,0,0], [-0.0333,0.1128,0.0805], [0,0,0], [0,0,0]],
"bay.doau":[[0,0.2338,-0.006], [0,0.3129,-0.0172], [0,0,0], [0,-0.455,0], [0.2743,0,0], [0.2743,0,0], [0.0802,-0.0173,-0.0271], [0,-0.455,0], [0.2132,0.25,-0.0185], [0,-0.455,0], [-0.2743,0,0], [-0.2743,0,0], [-0.0802,-0.0173,-0.0271], [0,-0.455,0], [-0.2132,0.25,-0.0185], [0,0,0], [0,0,0], [0.0314,0.1349,0.0812], [0,0,0], [0,0,0], [0,0,0], [-0.0314,0.1349,0.0812], [0,0,0], [0,0,0]],
"bni.doa3":[[0,0.2577,-0.0253], [0,0.4092,-0.0225], [0,0,0], [0,-0.5635,0], [0.2946,0,0], [0.2946,0,0], [0.1196,-0.0273,-0.0144], [0,-0.5044,0], [0.2717,0.3346,-0.0191], [0,-0.5635,0], [-0.2946,0,0], [-0.2946,0,0], [-0.1196,-0.0273,-0.0144], [0,-0.5044,0], [-0.2717,0.3346,-0.0191], [0,0,0], [0,0,0], [0.0422,0.1461,0.1038], [0,0,0], [0,0,0], [0,0,0], [-0.0422,0.1461,0.1038], [0,0,0], [0,0,0]],
"chi.doa3":[[0,0.1918,-0.01], [0,0.2692,-0.0255], [0,0,0], [0,-0.415,0], [0.2156,0,0], [0.2156,0,0], [0.0712,-0.0098,-0.024], [0,-0.415,0], [0.175,0.2084,-0.01], [0,-0.415,0], [-0.2156,0,0], [-0.2156,0,0], [-0.0712,-0.0098,-0.024], [0,-0.415,0], [-0.175,0.2084,-0.01], [0,0,0], [0,0,0], [0.0302,0.1465,0.089], [0,0,0], [0,0,0], [0,0,0], [-0.0302,0.1465,0.089], [0,0,0], [0,0,0]],
"ein.doau":[[0,0.25,0], [0,0.3,-0.024], [0,0,0], [0,-0.447,0], [0.315,0,0], [0.2745,0,0], [0.0768,-0.0168,-0.0257], [0,-0.427,0], [0.154,0.2331,-0.0217], [0,-0.447,0], [-0.315,0,0], [-0.2745,0,0], [-0.0768,-0.0168,-0.0257], [0,-0.427,0], [-0.154,0.2331,-0.0217], [0,0,0], [0,0,0], [0.0323,0.1138,0.0669], [0,0,0], [0,0,0], [0,0,0], [-0.0323,0.1138,0.0669], [0,0,0], [0,0,0]],
"gen.doa3":[[0,0.1918,-0.01], [0,0.2692,-0.0255], [0,0,0], [0,-0.415,0], [0.2156,0,0], [0.2156,0,0], [0.0712,-0.0098,-0.024], [0,-0.415,0], [0.175,0.2084,-0.01], [0,-0.415,0], [-0.2156,0,0], [-0.2156,0,0], [-0.0712,-0.0098,-0.024], [0,-0.415,0], [-0.175,0.2084,-0.01], [0,0,0], [0,0,0], [0.0302,0.1515,0.089], [0,0,0], [0,0,0], [0,0,0], [-0.0302,0.1515,0.089], [0,0,0], [0,0,0]],
"gen.doau":[[0,0.1918,-0.01], [0,0.2692,-0.0255], [0,0,0], [0,-0.415,0], [0.2156,0,0], [0.2156,0,0], [0.0712,-0.0098,-0.024], [0,-0.415,0], [0.175,0.2084,-0.01], [0,-0.415,0], [-0.2156,0,0], [-0.2156,0,0], [-0.0712,-0.0098,-0.024], [0,-0.415,0], [-0.175,0.2084,-0.01], [0,0,0], [0,0,0], [0.0302,0.1515,0.089], [0,0,0], [0,0,0], [0,0,0], [-0.0302,0.1515,0.089], [0,0,0], [0,0,0]],
"gok.doa3":[[0,0.22,0], [0,0.31,-0.0415], [0,0,0], [0,-0.4358,0], [0.2625,0,0], [0.2625,0,0], [0.0769,-0.0095,-0.0259], [0,-0.43,0], [0.145,0.2367,-0.0413], [0,-0.4358,0], [-0.2625,0,0], [-0.2625,0,0], [-0.0769,-0.0095,-0.0259], [0,-0.43,0], [-0.145,0.2367,-0.0413], [0,0,0], [0,0,0], [0.0288,0.0992,0.0743], [0,0,0], [0,0,0], [0,0,0], [-0.0288,0.0992,0.0743], [0,0,0], [0,0,0]],
"hel.doau":[[0,0.2,-0.0105], [0,0.2769,-0.0305], [0,0,0], [0,-0.443,0], [0.2484,0,0], [0.2484,0,0], [0.0732,-0.0155,-0.0247], [0,-0.386,0], [0.13,0.2254,-0.0288], [0,-0.443,0], [-0.2484,0,0], [-0.2484,0,0], [-0.0732,-0.0155,-0.0247], [0,-0.386,0], [-0.13,0.2254,-0.0288], [0,0,0], [0,0,0], [0.0287,0.1188,0.0767], [0,0,0], [0,0,0], [0,0,0], [-0.0287,0.1188,0.0767], [0,0,0], [0,0,0]],
"hik.doa3":[[0,0.2,-0.0105], [0,0.2769,-0.0305], [0,0,0], [0,-0.443,0], [0.2707,0,0], [0.2261,0,0], [0.0732,-0.0155,-0.0247], [0,-0.386,0], [0.13,0.2254,-0.0288], [0,-0.443,0], [-0.2707,0,0], [-0.2261,0,0], [-0.0732,-0.0155,-0.0247], [0,-0.386,0], [-0.13,0.2254,-0.0288], [0,0,0], [0,0,0], [0.0287,0.1188,0.0767], [0,0,0], [0,0,0], [0,0,0], [-0.0287,0.1188,0.0767], [0,0,0], [0,0,0]],
"jan.doa3":[[0,0.1808,-0.0211], [0,0.3384,-0.0139], [0,0,0], [0,-0.4463,0], [0.2621,0,0], [0.2668,0,0], [0.0797,-0.0213,-0.012], [0,-0.4251,0], [0.185,0.2781,-0.0159], [0,-0.4463,0], [-0.2621,0,0], [-0.2668,0,0], [-0.0797,-0.0213,-0.012], [0,-0.4251,0], [-0.185,0.2781,-0.0159], [0,0,0], [0,0,0], [0.03,0.1207,0.091], [0,0,0], [0,0,0], [0,0,0], [-0.03,0.1207,0.091], [0,0,0], [0,0,0]],
"jan.doau":[[0,0.1808,-0.0211], [0,0.3384,-0.0139], [0,0,0], [0,-0.4463,0], [0.2621,0,0], [0.2668,0,0], [0.0797,-0.0213,-0.012], [0,-0.4251,0], [0.185,0.2781,-0.0159], [0,-0.4463,0], [-0.2621,0,0], [-0.2668,0,0], [-0.0797,-0.0213,-0.012], [0,-0.4251,0], [-0.185,0.2781,-0.0159], [0,0,0], [0,0,0], [0.03,0.1207,0.091], [0,0,0], [0,0,0], [0,0,0], [-0.03,0.1207,0.091], [0,0,0], [0,0,0]],
"kas.doa3":[[0,0.18,0.0049], [0,0.2875,-0.03], [0,0,0], [0,-0.4199,0], [0.2397,0,0], [0.2397,0,0], [0.0761,-0.0205,-0.0257], [0,-0.4033,0], [0.1206,0.221,-0.0235], [0,-0.4199,0], [-0.2397,0,0], [-0.2397,0,0], [-0.0761,-0.0205,-0.0257], [0,-0.4033,0], [-0.1206,0.221,-0.0235], [0,0,0], [0,0,0], [0.031,0.1114,0.0756], [0,0,0], [0,0,0], [0,0,0], [-0.031,0.1114,0.0756], [0,0,0], [0,0,0]],
"kas.doau":[[0,0.18,0.0049], [0,0.2875,-0.03], [0,0,0], [0,-0.4199,0], [0.2397,0,0], [0.2397,0,0], [0.0761,-0.0205,-0.0257], [0,-0.4033,0], [0.1206,0.221,-0.0235], [0,-0.4199,0], [-0.2397,0,0], [-0.2397,0,0], [-0.0761,-0.0205,-0.0257], [0,-0.4033,0], [-0.1206,0.221,-0.0235], [0,0,0], [0,0,0], [0.0302,0.1113,0.0775], [0,0,0], [0,0,0], [0,0,0], [-0.0302,0.1113,0.0775], [0,0,0], [0,0,0]],
"kor.doa3":[[0,0.185,0.0052], [0,0.3015,-0.0262], [0,0,0], [0,-0.4164,0], [0.247,0,0], [0.247,0,0], [0.0784,-0.0283,-0.0264], [0,-0.4,0], [0.1242,0.2209,-0.0244], [0,-0.4164,0], [-0.247,0,0], [-0.247,0,0], [-0.0784,-0.0283,-0.0264], [0,-0.4,0], [-0.1242,0.2209,-0.0244], [0,0,0], [0,0,0], [0.029,0.103,0.0803], [0,0,0], [0,0,0], [0,0,0], [-0.029,0.103,0.0803], [0,0,0], [0,0,0]],
"kor.doau":[[0,0.185,0.0052], [0,0.3015,-0.0262], [0,0,0], [0,-0.4164,0], [0.247,0,0], [0.247,0,0], [0.0784,-0.0283,-0.0264], [0,-0.4,0], [0.1242,0.2209,-0.0244], [0,-0.4164,0], [-0.247,0,0], [-0.247,0,0], [-0.0784,-0.0283,-0.0264], [0,-0.4,0], [-0.1242,0.2209,-0.0244], [0,0,0], [0,0,0], [0.029,0.103,0.0803], [0,0,0], [0,0,0], [0,0,0], [-0.029,0.103,0.0803], [0,0,0], [0,0,0]],
"kte.doa3":[[0,0.25,0], [0,0.3,-0.024], [0,0,0], [0,-0.447,0], [0.315,0,0], [0.2745,0,0], [0.0768,-0.0168,-0.0257], [0,-0.427,0], [0.154,0.2331,-0.0217], [0,-0.447,0], [-0.315,0,0], [-0.2745,0,0], [-0.0768,-0.0168,-0.0257], [0,-0.427,0], [-0.154,0.2331,-0.0217], [0,0,0], [0,0,0], [0.0323,0.1138,0.0669], [0,0,0], [0,0,0], [0,0,0], [-0.0323,0.1138,0.0669], [0,0,0], [0,0,0]],
"lei.doa3":[[0,0.1959,-0.01], [0,0.2825,-0.01], [0,0,0], [0,-0.415,0], [0.2156,0,0], [0.2156,0,0], [0.0712,-0.0098,-0.024], [0,-0.415,0], [0.1172,0.225,-0.0249], [0,-0.415,0], [-0.2156,0,0], [-0.2156,0,0], [-0.0712,-0.0098,-0.024], [0,-0.415,0], [-0.1172,0.225,-0.0249], [0,0,0], [0,0,0], [0.0312,0.1194,0.0563], [0,0,0], [0,0,0], [0,0,0], [-0.0312,0.1194,0.0563], [0,0,0], [0,0,0]],
"lei.doau":[[0,0.1959,-0.01], [0,0.2825,-0.01], [0,0,0], [0,-0.415,0], [0.2156,0,0], [0.2156,0,0], [0.0712,-0.0098,-0.024], [0,-0.415,0], [0.1172,0.225,-0.0249], [0,-0.415,0], [-0.2156,0,0], [-0.2156,0,0], [-0.0712,-0.0098,-0.024], [0,-0.415,0], [-0.1172,0.225,-0.0249], [0,0,0], [0,0,0], [0.0308,0.1178,0.0619], [0,0,0], [0,0,0], [0,0,0], [-0.0308,0.1178,0.0619], [0,0,0], [0,0,0]],
"leo.doau":[[0,0.2338,-0.006], [0,0.36,0], [0,0,0], [0,-0.455,0], [0.2743,0,0], [0.2743,0,0], [0.0802,-0.0173,-0.0271], [0,-0.455,0], [0.2132,0.25,-0.0185], [0,-0.455,0], [-0.2743,0,0], [-0.2743,0,0], [-0.0802,-0.0173,-0.0271], [0,-0.455,0], [-0.2132,0.25,-0.0185], [0,0,0], [0,0,0], [0.0333,0.1128,0.0805], [0,0,0], [0,0,0], [0,0,0], [-0.0333,0.1128,0.0805], [0,0,0], [0,0,0]],
"nin.doa3":[[0,0.2255,0], [0,0.326,-0.024], [0,0,0], [0,-0.437,0], [0.2743,0,0], [0.2743,0,0], [0.0761,-0.0168,-0.0257], [0,-0.437,0], [0.183,0.24,-0.0217], [0,-0.437,0], [-0.2743,0,0], [-0.2743,0,0], [-0.0761,-0.0168,-0.0257], [0,-0.437,0], [-0.183,0.24,-0.0217], [0,0,0], [0,0,0], [0.0329,0.1138,0.0653], [0,0,0], [0,0,0], [0,0,0], [-0.0329,0.1138,0.0653], [0,0,0], [0,0,0]],
"pdg.doau":[[0,0.0525,0.0035], [0,0.1225,0.0112], [0,0,0], [0,-0.0315,0], [0.0279,0,-0.0013], [0.0455,0,0.0013], [0.0315,0,0.0084], [0,-0.035,0], [0.0266,0.0665,0.0035], [0,-0.0315,0], [-0.0279,0,-0.0013], [-0.0455,0,0.0013], [-0.0315,0,0.0084], [0,-0.035,0], [-0.0266,0.0665,0.0035], [0,0,0], [0,0,0], [0.0251,0.112,0.0476], [0,0,0], [0,0,0], [0,0,0], [-0.0251,0.112,0.0476], [0,0,0], [0,0,0]],
"rai.doa3":[[0,0.2058,0], [0,0.2921,-0.024], [0,0,0], [0,-0.437,0], [0.2743,0,0], [0.2743,0,0], [0.0761,-0.0168,-0.0257], [0,-0.437,0], [0.154,0.265,0], [0,-0.437,0], [-0.2743,0,0], [-0.2743,0,0], [-0.0761,-0.0168,-0.0257], [0,-0.437,0], [-0.154,0.265,0], [0,0,0], [0,0,0], [0.029,0.1124,0.0684], [0,0,0], [0,0,0], [0,0,0], [-0.029,0.1124,0.0684], [0,0,0], [0,0,0]],
"rai.doau":[[0,0.2058,0], [0,0.2921,-0.024], [0,0,0], [0,-0.437,0], [0.2743,0,0], [0.2743,0,0], [0.0761,-0.0168,-0.0257], [0,-0.437,0], [0.154,0.265,0], [0,-0.437,0], [-0.2743,0,0], [-0.2743,0,0], [-0.0761,-0.0168,-0.0257], [0,-0.437,0], [-0.154,0.265,0], [0,0,0], [0,0,0], [0.029,0.1124,0.0684], [0,0,0], [0,0,0], [0,0,0], [-0.029,0.1124,0.0684], [0,0,0], [0,0,0]],
"ryu.doa3":[[0,0.2074,0.02], [0,0.34,-0.03], [0,0,0], [0,-0.437,0], [0.3,0,0], [0.2486,0,0], [0.0761,-0.0168,-0.0257], [0,-0.437,0], [0.18,0.26,0], [0,-0.437,0], [-0.3,0,0], [-0.2486,0,0], [-0.0761,-0.0168,-0.0257], [0,-0.437,0], [-0.18,0.26,0], [0,0,0], [0,0,0], [0.0305,0.117,0.096], [0,0,0], [0,0,0], [0,0,0], [-0.0305,0.117,0.096], [0,0,0], [0,0,0]],
"ryu.doau":[[0,0.2074,0.02], [0,0.34,-0.03], [0,0,0], [0,-0.437,0], [0.2743,0,0], [0.2743,0,0], [0.0761,-0.0168,-0.0257], [0,-0.437,0], [0.18,0.26,0], [0,-0.437,0], [-0.2743,0,0], [-0.2743,0,0], [-0.0761,-0.0168,-0.0257], [0,-0.437,0], [-0.18,0.26,0], [0,0,0], [0,0,0], [0.0305,0.117,0.096], [0,0,0], [0,0,0], [0,0,0], [-0.0305,0.117,0.096], [0,0,0], [0,0,0]],
"sam.doa3":[[0,0.2338,-0.006], [0,0.3129,-0.0172], [0,0,0], [0,-0.455,0], [0.2743,0,0], [0.2743,0,0], [0.0802,-0.0173,-0.0271], [0,-0.455,0], [0.2132,0.25,-0.0185], [0,-0.455,0], [-0.2743,0,0], [-0.2743,0,0], [-0.0802,-0.0173,-0.0271], [0,-0.455,0], [-0.2132,0.25,-0.0185], [0,0,0], [0,0,0], [0.0314,0.1349,0.0812], [0,0,0], [0,0,0], [0,0,0], [-0.0314,0.1349,0.0812], [0,0,0], [0,0,0]],
"sui.doa3":[[0,0.1808,-0.0211], [0,0.3158,-0.0139], [0,0,0], [0,-0.4463,0], [0.2621,0,0], [0.2668,0,0], [0.0797,-0.0213,-0.012], [0,-0.4251,0], [0.1966,0.2781,-0.0159], [0,-0.4463,0], [-0.2621,0,0], [-0.2668,0,0], [-0.0797,-0.0213,-0.012], [0,-0.4251,0], [-0.1966,0.2781,-0.0159], [0,0,0], [0,0,0], [0.0299,0.1535,0.0872], [0,0,0], [0,0,0], [0,0,0], [-0.0299,0.1535,0.0872], [0,0,0], [0,0,0]],
"tin.doa3":[[0,0.2,-0.0105], [0,0.2769,-0.0305], [0,0,0], [0,-0.443,0], [0.254,0,0], [0.2429,0,0], [0.0732,-0.0155,-0.0247], [0,-0.386,0], [0.13,0.2254,-0.0288], [0,-0.443,0], [-0.254,0,0], [-0.2429,0,0], [-0.0732,-0.0155,-0.0247], [0,-0.386,0], [-0.13,0.2254,-0.0288], [0,0,0], [0,0,0], [0.0291,0.1195,0.0718], [0,0,0], [0,0,0], [0,0,0], [-0.0291,0.1195,0.0718], [0,0,0], [0,0,0]],
"tin.doau":[[0,0.2,-0.0105], [0,0.2769,-0.0305], [0,0,0], [0,-0.443,0], [0.254,0,0], [0.2429,0,0], [0.0732,-0.0155,-0.0247], [0,-0.386,0], [0.13,0.2254,-0.0288], [0,-0.443,0], [-0.254,0,0], [-0.2429,0,0], [-0.0732,-0.0155,-0.0247], [0,-0.386,0], [-0.13,0.2254,-0.0288], [0,0,0], [0,0,0], [0.0291,0.1195,0.0718], [0,0,0], [0,0,0], [0,0,0], [-0.0291,0.1195,0.0718], [0,0,0], [0,0,0]],
"tng.doa3":[[0,0.2051,-0.0061], [0,0.2977,-0.0337], [0,0,0], [0,-0.4334,0], [0.2543,0,0], [0.2743,0,0], [0.0899,-0.0169,-0.0271], [0,-0.4338,0], [0.2832,0.2787,-0.0599], [0,-0.4334,0], [-0.2543,0,0], [-0.2743,0,0], [-0.0899,-0.0169,-0.0271], [0,-0.4338,0], [-0.2832,0.2787,-0.0599], [0,0,0], [0,0,0], [0.036,0.1885,0.0992], [0,0,0], [0,0,0], [0,0,0], [-0.036,0.1885,0.0992], [0,0,0], [0,0,0]],
"tng.doau":[[0,0.2051,-0.0061], [0,0.2977,-0.0337], [0,0,0], [0,-0.4334,0], [0.2543,0,0], [0.2743,0,0], [0.0899,-0.0169,-0.0271], [0,-0.4338,0], [0.2832,0.2787,-0.0599], [0,-0.4334,0], [-0.2543,0,0], [-0.2743,0,0], [-0.0899,-0.0169,-0.0271], [0,-0.4338,0], [-0.2832,0.2787,-0.0599], [0,0,0], [0,0,0], [0.036,0.1885,0.0992], [0,0,0], [0,0,0], [0,0,0], [-0.036,0.1885,0.0992], [0,0,0], [0,0,0], [0.125,0.3,-0.2], [0,0,-0.45], [0,0,-0.575], [-0.125,0.3,-0.2], [0,0,-0.45], [0,0,-0.575]],
"vay.doax":[[0,0.11,0], [0,0.0564,0.0138], [0,0,0], [0,-0.3931,0], [0.23,0,0], [0.23,0,0], [0.0784,-0.003,-0.0073], [0,-0.4276,0], [0.1206,0,0], [0,-0.3931,0], [-0.23,0,0], [-0.23,0,0], [-0.0784,-0.003,-0.0073], [0,-0.4276,0], [-0.1206,0,0], [0,0,0], [0,0.1758,-0.0192], [0.0295,0.0422,0.058], [0,-0.0688,0.1106], [0,0.2423,-0.021], [0,0.1758,-0.0192], [-0.0295,0.0422,0.058], [0,-0.0688,0.1106], [0,0.0982,0]],
"vcr.doax":[[0,0.113,0], [0,0.073,0.014], [0,0,0], [0,-0.438,0], [0.249,0,0], [0.249,0,0], [0.075,0.0217,-0.0108], [0,-0.438,0], [0.13,0,0], [0,-0.438,0], [-0.249,0,0], [-0.249,0,0], [-0.075,0.0217,-0.0108], [0,-0.438,0], [-0.13,0,0], [0,0,0], [0,0.2063,-0.0403], [0.0286,0.0478,0.0624], [0,-0.071,0.1079], [0,0.264,-0.0397], [0,0.2063,-0.0403], [-0.0286,0.0478,0.0624], [0,-0.071,0.1079], [0,0.13,0]],
"vhk.doax":[[0,0.1148,0], [0,0.0606,0.014], [0,0,0], [0,-0.4194,0], [0.249,0,0], [0.249,0,0], [0.075,0.0079,-0.0108], [0,-0.4194,0], [0.124,0,0], [0,-0.4194,0], [-0.249,0,0], [-0.249,0,0], [-0.075,0.0079,-0.0108], [0,-0.4194,0], [-0.124,0,0], [0,0,0], [0,0.1906,-0.0403], [0.0287,0.0364,0.0614], [0,-0.0638,0.1079], [0,0.2642,-0.0397], [0,0.1906,-0.0403], [-0.0287,0.0364,0.0614], [0,-0.0638,0.1079], [0,0.1197,0]],
"vht.doax":[[0,0.11,0], [0,0.0564,0.0138], [0,0,0], [0,-0.4253,0], [0.24,0,0], [0.24,0,0], [0.0784,0.0142,-0.0049], [0,-0.4125,0], [0.1206,0,0], [0,-0.4253,0], [-0.24,0,0], [-0.24,0,0], [-0.0784,0.0142,-0.0049], [0,-0.4125,0], [-0.1206,0,0], [0,0,0], [0,0.1759,-0.0192], [0.029,0.0466,0.0665], [0,-0.0688,0.098], [0,0.2565,-0.021], [0,0.1759,-0.0192], [-0.029,0.0466,0.0665], [0,-0.0688,0.098], [0,0.12,0]],
"vks.doax":[[0,0.11,0], [0,0.0564,0.0138], [0,0,0], [0,-0.3931,0], [0.23,0,0], [0.23,0,0], [0.0784,-0.003,-0.0073], [0,-0.4276,0], [0.1206,0,0], [0,-0.3931,0], [-0.23,0,0], [-0.23,0,0], [-0.0784,-0.003,-0.0073], [0,-0.4276,0], [-0.1206,0,0], [0,0,0], [0,0.1758,-0.0192], [0.0302,0.0443,0.0595], [0,-0.0688,0.1106], [0,0.2423,-0.021], [0,0.1758,-0.0192], [-0.0302,0.0443,0.0595], [0,-0.0688,0.1106], [0,0.0982,0]],
"vle.doax":[[0,0.11,0], [0,0.0564,0.0138], [0,0,0], [0,-0.4253,0], [0.24,0,0], [0.24,0,0], [0.0784,0.0142,-0.0049], [0,-0.4125,0], [0.1206,0,0], [0,-0.4253,0], [-0.24,0,0], [-0.24,0,0], [-0.0784,0.0142,-0.0049], [0,-0.4125,0], [-0.1206,0,0], [0,0,0], [0,0.1759,-0.0192], [0.0308,0.0486,0.0665], [0,-0.0688,0.098], [0,0.2565,-0.021], [0,0.1759,-0.0192], [-0.0308,0.0486,0.0665], [0,-0.0688,0.098], [0,0.12,0]],
"vls.doax":[[0,0.1148,0], [0,0.0606,0.014], [0,0,0], [0,-0.4194,0], [0.249,0,0], [0.249,0,0], [0.075,0.0079,-0.0108], [0,-0.4194,0], [0.124,0,0], [0,-0.4194,0], [-0.249,0,0], [-0.249,0,0], [-0.075,0.0079,-0.0108], [0,-0.4194,0], [-0.124,0,0], [0,0,0], [0,0.1906,-0.0403], [0.0289,0.0494,0.0596], [0,-0.0638,0.1079], [0,0.2642,-0.0397], [0,0.1906,-0.0403], [-0.0289,0.0494,0.0596], [0,-0.0638,0.1079], [0,0.1197,0]],
"vpd.doax":[[0,0.0525,0.0035], [0,0.1225,0.0112], [0,0,0], [0,-0.0315,0], [0.0279,0,-0.0013], [0.0455,0,0.0013], [0.0315,0,0.0084], [0,-0.035,0], [0.0266,0.0665,0.0035], [0,-0.0315,0], [-0.0279,0,-0.0013], [-0.0455,0,0.0013], [-0.0315,0,0.0084], [0,-0.035,0], [-0.0266,0.0665,0.0035], [0,0,0], [0,0,0], [0.0251,0.112,0.0476], [0,0,0], [0,0,0], [0,0,0], [-0.0251,0.112,0.0476], [0,0,0], [0,0,0]],
"vtn.doax":[[0,0.1148,0], [0,0.0606,0.014], [0,0,0], [0,-0.4194,0], [0.249,0,0], [0.249,0,0], [0.075,0.0079,-0.0108], [0,-0.4194,0], [0.124,0,0], [0,-0.4194,0], [-0.249,0,0], [-0.249,0,0], [-0.075,0.0079,-0.0108], [0,-0.4194,0], [-0.124,0,0], [0,0,0], [0,0.1906,-0.0403], [0.0291,0.0433,0.0564], [0,-0.0638,0.1079], [0,0.2642,-0.0397], [0,0.1906,-0.0403], [-0.0291,0.0433,0.0564], [0,-0.0638,0.1079], [0,0.1197,0]],
"vun.doax":[[0,0.11,0], [0,0.0564,0.0138], [0,0,0], [0,-0.4253,0], [0.247,0,0], [0.247,0,0], [0.0784,-0.0283,-0.0264], [0,-0.37,0], [0.1242,0,0], [0,-0.4253,0], [-0.247,0,0], [-0.247,0,0], [-0.0784,-0.0283,-0.0264], [0,-0.37,0], [-0.1242,0,0], [0,0,0], [0,0.1759,-0.0192], [0.029,0.0466,0.0665], [0,-0.0688,0.1195], [0,0.2565,-0.021], [0,0.1759,-0.0192], [-0.029,0.0466,0.0665], [0,-0.0688,0.1195], [0,0.12,0]],
"yti.doau":[[0,0.126,0.0034], [0,0.1759,-0.021], [0,0,0], [0,-0.2905,0], [0.1614,0,0], [0.1614,0,0], [0.0512,-0.0108,-0.0173], [0,-0.273,0], [0.0781,0.168,-0.016], [0,-0.2905,0], [-0.1614,0,0], [-0.1614,0,0], [-0.0512,-0.0108,-0.0173], [0,-0.273,0], [-0.0781,0.168,-0.016], [0,0,0], [0,0,0], [0.0251,0.112,0.0476], [0,0,0], [0,0,0], [0,0,0], [-0.0251,0.112,0.0476], [0,0,0], [0,0,0]],
"zac.doa3":[[0,0.2,-0.01], [0,0.33,-0.025], [0,0,0], [0,-0.437,0], [0.2743,0,0], [0.2612,0,0], [0.0761,-0.0168,-0.0257], [0,-0.437,0], [0.185,0.28,0], [0,-0.437,0], [-0.2743,0,0], [-0.2612,0,0], [-0.0761,-0.0168,-0.0257], [0,-0.437,0], [-0.185,0.28,0], [0,0,0], [0,0,0], [0.0305,0.1342,0.086], [0,0,0], [0,0,0], [0,0,0], [-0.0305,0.1342,0.086], [0,0,0], [0,0,0]],
"zac.doau":[[0,0.2,-0.01], [0,0.33,-0.025], [0,0,0], [0,-0.437,0], [0.2743,0,0], [0.2612,0,0], [0.0761,-0.0168,-0.0257], [0,-0.437,0], [0.185,0.28,0], [0,-0.437,0], [-0.2743,0,0], [-0.2612,0,0], [-0.0761,-0.0168,-0.0257], [0,-0.437,0], [-0.185,0.28,0], [0,0,0], [0,0,0], [0.0305,0.1342,0.086], [0,0,0], [0,0,0], [0,0,0], [-0.0305,0.1342,0.086], [0,0,0], [0,0,0]]}
if cname in skeletons:
return skeletons[cname]
else:
return false