.. | .. |
---|
126 | 126 | |
---|
127 | 127 | bRep = null; |
---|
128 | 128 | |
---|
129 | | - if (link2master) |
---|
| 129 | + if (Link2Support()) |
---|
130 | 130 | renderme(); // null); |
---|
131 | 131 | } |
---|
132 | 132 | |
---|
.. | .. |
---|
134 | 134 | transient cVector maxima = new cVector(); |
---|
135 | 135 | |
---|
136 | 136 | // ObjectArrayList<Transform> initialmatrices; |
---|
| 137 | + transient boolean rendered = false; |
---|
137 | 138 | |
---|
138 | | - void DrawNode(CameraPane display, Object3D /*Composite*/ root, boolean selected) // ?? |
---|
| 139 | + void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) // ?? |
---|
139 | 140 | { |
---|
140 | 141 | //if (support == null) |
---|
141 | 142 | // System.err.println("DrawNode Merge # " + ((Mocap)object).frame); |
---|
.. | .. |
---|
143 | 144 | if (bRep == null && GetObject() != null) |
---|
144 | 145 | renderme(); // display); // only once |
---|
145 | 146 | |
---|
146 | | - if (/*display.LIVE && live &&*/link2master) // && display.drawMode == display.SHADOW) // FUCK!!! |
---|
| 147 | + if (/*display.LIVE && live &&*/Link2Support()) // && display.drawMode == display.SHADOW) // SHADOW!!! |
---|
147 | 148 | { |
---|
148 | 149 | try |
---|
149 | 150 | { |
---|
.. | .. |
---|
153 | 154 | { |
---|
154 | 155 | e.printStackTrace(); |
---|
155 | 156 | } |
---|
| 157 | + |
---|
| 158 | + rendered = true; |
---|
156 | 159 | } |
---|
157 | 160 | |
---|
158 | 161 | super.DrawNode(display, root, selected); |
---|
.. | .. |
---|
160 | 163 | // debug stuff |
---|
161 | 164 | if (false) // bRep.averagepoints != null) |
---|
162 | 165 | { |
---|
163 | | - javax.media.opengl.GL gl = display.GetGL(); |
---|
164 | | - |
---|
165 | | - gl.glColor3f(1, 0, 0); |
---|
166 | | - //gl.glMaterialfv(gl.GL_FRONT, gl.GL_DIFFUSE, colorV, 0); |
---|
167 | | - //gl.glMaterialfv(gl.GL_BACK, gl.GL_DIFFUSE, colorV, 0); |
---|
168 | | - |
---|
169 | | - for (int i=0; i<NumGeometries(GetObject()); i++) |
---|
170 | | - { |
---|
171 | | - int i3 = i*3; |
---|
172 | | - |
---|
173 | | - float off = 0.005f; |
---|
174 | | - |
---|
175 | | - gl.glBegin(gl.GL_LINES); |
---|
176 | | - gl.glVertex3d(bRep.averagepoints[i3]-off, bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]); |
---|
177 | | - gl.glVertex3d(bRep.averagepoints[i3]+off, bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]); |
---|
178 | | - gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1]-off, bRep.averagepoints[i3+2]); |
---|
179 | | - gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1]+off, bRep.averagepoints[i3+2]); |
---|
180 | | - gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]-off); |
---|
181 | | - gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]+off); |
---|
182 | | - gl.glEnd(); |
---|
183 | | - } |
---|
| 166 | +// javax.media.opengl.GL gl = display.GetGL(); |
---|
| 167 | +// |
---|
| 168 | +// gl.glColor3f(1, 0, 0); |
---|
| 169 | +// //gl.glMaterialfv(gl.GL_FRONT, gl.GL_DIFFUSE, colorV, 0); |
---|
| 170 | +// //gl.glMaterialfv(gl.GL_BACK, gl.GL_DIFFUSE, colorV, 0); |
---|
| 171 | +// |
---|
| 172 | +// for (int i=0; i<NumGeometries(GetObject()); i++) |
---|
| 173 | +// { |
---|
| 174 | +// int i3 = i*3; |
---|
| 175 | +// |
---|
| 176 | +// float off = 0.005f; |
---|
| 177 | +// |
---|
| 178 | +// gl.glBegin(gl.GL_LINES); |
---|
| 179 | +// gl.glVertex3d(bRep.averagepoints[i3]-off, bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]); |
---|
| 180 | +// gl.glVertex3d(bRep.averagepoints[i3]+off, bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]); |
---|
| 181 | +// gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1]-off, bRep.averagepoints[i3+2]); |
---|
| 182 | +// gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1]+off, bRep.averagepoints[i3+2]); |
---|
| 183 | +// gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]-off); |
---|
| 184 | +// gl.glVertex3d(bRep.averagepoints[i3], bRep.averagepoints[i3+1], bRep.averagepoints[i3+2]+off); |
---|
| 185 | +// gl.glEnd(); |
---|
| 186 | +// } |
---|
184 | 187 | } |
---|
185 | 188 | } |
---|
186 | 189 | |
---|
.. | .. |
---|
192 | 195 | try |
---|
193 | 196 | { |
---|
194 | 197 | //font = FontRender.createFont("Dialog", 11, false, true); |
---|
195 | | - font = new FontRender.GLFont(gl, GrafreeD.class.getResourceAsStream("DejaVu_Sans_11.fnt")); |
---|
| 198 | + font = new FontRender.GLFont(gl, Grafreed.class.getResourceAsStream("DejaVu_Sans_11.fnt")); |
---|
196 | 199 | } catch (java.io.IOException e) |
---|
197 | 200 | { |
---|
198 | 201 | e.printStackTrace(); |
---|
.. | .. |
---|
260 | 263 | bRep.startvertices = new int[NumGeometries(GetObject()) + 1]; |
---|
261 | 264 | bRep.averagepoints = new float[(bRep.startvertices.length-1) * 3]; |
---|
262 | 265 | bRep.extremepoints = new float[(bRep.startvertices.length-1) * 3]; |
---|
263 | | - bRep.supportsizes = new float[(bRep.startvertices.length-1)]; |
---|
| 266 | + bRep.supportminsize = new float[(bRep.startvertices.length-1)]; |
---|
| 267 | + bRep.supportmaxsize = new float[(bRep.startvertices.length-1)]; |
---|
264 | 268 | buildrep = true; |
---|
265 | 269 | |
---|
266 | 270 | // initialmatrices = new ObjectArrayList<Transform>(); |
---|
.. | .. |
---|
396 | 400 | |
---|
397 | 401 | } |
---|
398 | 402 | |
---|
399 | | - public void drawCube(CameraPane display, float extent) |
---|
| 403 | + public void drawCube(iCameraPane display, float extent) |
---|
400 | 404 | { |
---|
401 | | - GL gl = display.getGL(); |
---|
| 405 | + GL gl = display.GetGL0(); |
---|
402 | 406 | |
---|
403 | 407 | extent = extent * 0.5f; |
---|
404 | 408 | |
---|
.. | .. |
---|
686 | 690 | } |
---|
687 | 691 | else |
---|
688 | 692 | { |
---|
689 | | - if (bRep.averagepoints == null || bRep.extremepoints == null || bRep.supportsizes == null) |
---|
| 693 | + if (bRep.averagepoints == null || bRep.extremepoints == null || bRep.supportminsize == null || bRep.supportmaxsize == null) |
---|
690 | 694 | { |
---|
691 | 695 | bRep.averagepoints = new float[(bRep.startvertices.length-1) * 3]; |
---|
692 | 696 | bRep.extremepoints = new float[(bRep.startvertices.length-1) * 3]; |
---|
693 | | - bRep.supportsizes = new float[(bRep.startvertices.length-1)]; |
---|
| 697 | + bRep.supportminsize = new float[(bRep.startvertices.length-1)]; |
---|
| 698 | + bRep.supportmaxsize = new float[(bRep.startvertices.length-1)]; |
---|
694 | 699 | } |
---|
695 | 700 | |
---|
696 | 701 | float averagex = 0; |
---|
.. | .. |
---|
731 | 736 | v.norm.normalize(); |
---|
732 | 737 | } |
---|
733 | 738 | |
---|
734 | | - int index3 = currentobject-1; |
---|
735 | | - index3 *= 3; |
---|
736 | | - |
---|
737 | | - bRep.averagepoints[index3] = averagex/count; |
---|
738 | | - bRep.averagepoints[index3+1] = averagey/count; |
---|
739 | | - bRep.averagepoints[index3+2] = averagez/count; |
---|
740 | | - |
---|
741 | | - double mindist2 = 1E10f; |
---|
742 | | - double maxdist2 = -1E10f; |
---|
743 | | - |
---|
744 | | - for (int i=bRep.startvertices[currentobject-1]; i<bRep.startvertices[currentobject]; i++) |
---|
| 739 | + if (!rendered) |
---|
745 | 740 | { |
---|
746 | | - Vertex v = bRep.GetVertex(i); |
---|
747 | | - |
---|
748 | | - double x = v.x - bRep.averagepoints[index3]; |
---|
749 | | - double y = v.y - bRep.averagepoints[index3+1]; |
---|
750 | | - double z = v.z - bRep.averagepoints[index3+2]; |
---|
751 | | - |
---|
752 | | - double dist2 = x*x + y*y + z*z; |
---|
753 | | - |
---|
754 | | - if (mindist2 > dist2) |
---|
755 | | - mindist2 = dist2; |
---|
756 | | - if (maxdist2 < dist2) |
---|
| 741 | + int index3 = currentobject-1; |
---|
| 742 | + index3 *= 3; |
---|
| 743 | + |
---|
| 744 | + bRep.averagepoints[index3] = averagex/count; |
---|
| 745 | + bRep.averagepoints[index3+1] = averagey/count; |
---|
| 746 | + bRep.averagepoints[index3+2] = averagez/count; |
---|
| 747 | + |
---|
| 748 | + double mindist2 = 1E10f; |
---|
| 749 | + double maxdist2 = -1E10f; |
---|
| 750 | + |
---|
| 751 | + for (int i=bRep.startvertices[currentobject-1]; i<bRep.startvertices[currentobject]; i++) |
---|
757 | 752 | { |
---|
758 | | - maxdist2 = dist2; |
---|
759 | | - bRep.extremepoints[index3] = (float)v.x; |
---|
760 | | - bRep.extremepoints[index3+1] = (float)v.y; |
---|
761 | | - bRep.extremepoints[index3+2] = (float)v.z; |
---|
| 753 | + Vertex v = bRep.GetVertex(i); |
---|
| 754 | + |
---|
| 755 | + double x = v.x - bRep.averagepoints[index3]; |
---|
| 756 | + double y = v.y - bRep.averagepoints[index3+1]; |
---|
| 757 | + double z = v.z - bRep.averagepoints[index3+2]; |
---|
| 758 | + |
---|
| 759 | + double dist2 = x*x + y*y + z*z; |
---|
| 760 | + |
---|
| 761 | + if (mindist2 > dist2) |
---|
| 762 | + mindist2 = dist2; |
---|
| 763 | + |
---|
| 764 | + if (maxdist2 < dist2) |
---|
| 765 | + { |
---|
| 766 | + maxdist2 = dist2; |
---|
| 767 | + bRep.extremepoints[index3] = (float)v.x; |
---|
| 768 | + bRep.extremepoints[index3+1] = (float)v.y; |
---|
| 769 | + bRep.extremepoints[index3+2] = (float)v.z; |
---|
| 770 | + } |
---|
762 | 771 | } |
---|
| 772 | + |
---|
| 773 | + bRep.supportminsize[currentobject-1] = (float)Math.sqrt(mindist2); |
---|
| 774 | + bRep.supportmaxsize[currentobject-1] = (float)Math.sqrt(maxdist2); |
---|
| 775 | + // for (int i = 0; i < hull.numVertices(); i++) |
---|
| 776 | + // { |
---|
| 777 | + // |
---|
| 778 | + // } |
---|
763 | 779 | } |
---|
764 | | - |
---|
765 | | - bRep.supportsizes[currentobject-1] = (float)Math.sqrt(mindist2); |
---|
766 | | -// for (int i = 0; i < hull.numVertices(); i++) |
---|
767 | | -// { |
---|
768 | | -// |
---|
769 | | -// } |
---|
770 | 780 | } |
---|
771 | 781 | |
---|
772 | 782 | // if (hull.numTriangles() > 0) |
---|