20 Tempest::Matrix4x4 mv = Tempest::Matrix4x4::mkIdentity();
21 mv.translate(0, 0, 0.5f);
22 mv.scale(0.8f,1.f,1.f);
26 cmd.setViewport(i.x,i.y,i.w,i.h);
27 for(
size_t r=0;r<i.mesh.nodesCount();++r) {
28 auto n = i.mesh.node(r);
29 auto& m = n.material();
31 if(
auto s = n.mesh()) {
32 auto sl = n.meshSlice();
39 cmd.setBinding(0, *m.tex);
42 cmd.draw(s->vbo, s->ibo, sl.first, sl.second);
53 auto& itData = item.handle();
55 float sz = (mesh->bbox[1]-mesh->bbox[0]).length();
56 auto mv = (mesh->bbox[1]+mesh->bbox[0])*0.5f;
59 mv = Vec3(mv.x,mv.y,mv.z);
65 Tempest::Matrix4x4 mat;
68 float rotx = float(itData.inv_rot_x);
69 float roty = float(itData.inv_rot_y);
70 float rotz = float(itData.inv_rot_z);
73 static const float invX = -45;
74 static const float invY = 0;
75 static const float invZ = 90;
76 mat.rotateOX(invX+rotx);
77 mat.rotateOZ(invZ+rotz);
78 mat.rotateOY(invY+roty);
81 static const float invX = 0;
82 static const float invY = -90;
83 static const float invZ = 180;
84 mat.rotateOX(invX+rotx);
85 mat.rotateOZ(invZ+rotz);
86 mat.rotateOY(invY+roty);
89 static const float invX = 90;
90 static const float invY = 0;
91 static const float invZ = 90;
92 mat.rotateOX(invX+rotx);
93 mat.rotateOZ(invZ+rotz);
94 mat.rotateOY(invY+roty);
97 static const float invX = 200;
98 static const float invY = 0;
99 static const float invZ = 90;
100 mat.rotateOX(invX+rotx);
101 mat.rotateOZ(invZ+rotz);
102 mat.rotateOY(invY+roty);
105 static const float invX = 180;
106 static const float invY = 0;
107 static const float invZ = 0;
108 mat.rotateOX(invX+rotx);
109 mat.rotateOZ(invZ+rotz);
110 mat.rotateOY(invY+roty);
113 static const float invX = 180;
114 static const float invY = 0;
115 static const float invZ = 45;
116 mat.rotateOX(invX+rotx);
117 mat.rotateOZ(invZ+rotz);
118 mat.rotateOY(invY+roty);
121 static const float invX = 180;
122 static const float invY = 90;
123 static const float invZ = -90;
129 static float invXa = 135;
130 static float invYa = 90;
131 static float invZa = 45;
133 mat.rotateOX(invXa-rotx);
134 mat.rotateOZ(invZa-rotz);
135 mat.rotateOY(invYa-roty);
137 static const float invX = 180;
138 static const float invY = -90;
139 static const float invZ = -90;
140 mat.rotateOX(invX+rotx);
141 mat.rotateOZ(invZ+rotz);
142 mat.rotateOY(invY+roty);
145 for(
int i=0; i<3; ++i){
146 auto trX = mat.at(i,0);
147 auto trY = mat.at(i,2);
155 itm.mesh =
MeshObjects::Mesh(itmGroup,*mesh,itData.material,0,itData.material,
false);
156 itm.mesh.setObjMatrix(Matrix4x4::mkIdentity());
162 items.push_back(std::move(itm));