internal PositionKey newPositionKey() { PositionKey key = new PositionKey(); positions.Add(key); return(key); }
private void readPositionFrames(Bone bone) { string textcount = readLine(); int count = int.Parse(textcount); for (int frameId = 0; frameId < count; ++frameId) { string[] data = readLine().Split(" ".ToCharArray()); PositionKey key = bone.newPositionKey(); key.time = math1.ParseFloat(data[0]); key.x = math1.ParseFloat(data[1]) * scale; key.y = math1.ParseFloat(data[2]) * scale; key.z = math1.ParseFloat(data[3]) * scale; } }
private static Model ExtractModel(Runner run) { Model model = new Model(); model.framecount = run.framecount; model.currentFrame = run.current; foreach (MS3DMaterial s in run.materials) { Material mat = model.newMaterial(); mat.name = AsString(s.name); copyToColor(mat.ambient, s.ambient); copyToColor(mat.diffuse, s.diffuse); copyToColor(mat.specular, s.specular); copyToColor(mat.emissive, s.emissive); mat.shininess = s.shininess; mat.transperency = s.transparency; mat.diffuseTexture = AsString(s.texture); mat.alphatexture = AsString(s.alphamap); } foreach (MeshGroup g in run.groups) { Mesh m = model.newMesh(); m.materialId = g.material; foreach (int tr in g.tri) { MS3DTriangle tri = run.triangles[tr]; int[] vid = new int[3]; int[] nid = new int[3]; for (int i = 0; i < 3; ++i) { vid[i] = m.vertices.Count; nid[i] = m.normals.Count; Normal norm = m.newNormal(); norm.x = tri.vertexNormals[i + 0]; norm.y = tri.vertexNormals[i + 1]; norm.z = tri.vertexNormals[i + 2]; MS3DVertex v = run.vertices[tri.vertexIndices[i]]; Vertex ver = m.newVertex(); ver.u = tri.s[i]; ver.v = tri.t[i]; ver.bone = v.boneID; ver.x = v.vertex[0]; ver.y = v.vertex[1]; ver.z = v.vertex[2]; } Tri t = m.newTri(); t.n1 = nid[0]; t.n2 = nid[1]; t.n3 = nid[2]; t.v1 = vid[0]; t.v2 = vid[1]; t.v3 = vid[2]; } } foreach (Joint j in run.joints) { Bone b = model.newBone(); b.parentName = AsString(j.joint.parentName); b.name = AsString(j.joint.name); b.rx = j.joint.rotation[0]; b.ry = j.joint.rotation[1]; b.rz = j.joint.rotation[2]; b.x = j.joint.translation[0]; b.y = j.joint.translation[1]; b.z = j.joint.translation[2]; foreach (MS3DKeyframe r in j.rotations) { RotatonKey k = b.newRotationKey(); k.time = r.time * run.animfps; k.x = r.parameter[0]; k.y = r.parameter[1]; k.z = r.parameter[2]; } foreach (MS3DKeyframe t in j.translations) { PositionKey k = b.newPositionKey(); k.time = t.time * run.animfps; k.x = t.parameter[0]; k.y = t.parameter[1]; k.z = t.parameter[2]; } } model.mapBonesToId(); return(model); }