.. | .. |
---|
102 | 102 | double resizefactor = 1; |
---|
103 | 103 | |
---|
104 | 104 | static cVector tmp = new cVector(); |
---|
105 | | - |
---|
106 | | - void CallList(CameraPane display, Object3D /*Composite*/ root, boolean selected, boolean blocked) |
---|
107 | | - { |
---|
108 | | - CreateHT(); |
---|
109 | 105 | |
---|
110 | | - float r = display.modelParams0[0]; |
---|
111 | | - float g = display.modelParams0[1]; |
---|
112 | | - float b = display.modelParams0[2]; |
---|
113 | | - float opacity = display.modelParams5[1]; |
---|
114 | | - |
---|
115 | | - //final GL gl = GLU.getCurrentGL(); |
---|
116 | | - GL gl = display.GetGL(); // getGL(); |
---|
117 | | - |
---|
118 | | - int s = points.size(); |
---|
119 | | - |
---|
120 | | - boolean cf = gl.glIsEnabled(gl.GL_CULL_FACE); |
---|
121 | | - gl.glEnable(gl.GL_CULL_FACE); |
---|
122 | | - |
---|
123 | | - for (int i=s; --i>=0;) |
---|
124 | | - //for (int i=0; i<s; i++) |
---|
125 | | - { |
---|
126 | | - cVector v = points.get(i); |
---|
127 | | - |
---|
128 | | - double mindist = Double.MAX_VALUE; |
---|
129 | | - |
---|
130 | | - double size = minimumSize; |
---|
131 | | - |
---|
132 | | - double distancenext = 0; |
---|
133 | | - |
---|
134 | | - if (i > 0) |
---|
135 | | - { |
---|
136 | | - cVector w = points.get(i-1); |
---|
137 | | - |
---|
138 | | - double dist = w.distance(v); |
---|
139 | | - |
---|
140 | | - distancenext = dist; |
---|
141 | | - |
---|
142 | | - if (mindist > dist) |
---|
143 | | - { |
---|
144 | | - mindist = dist; |
---|
145 | | - size = mindist*resizefactor; |
---|
146 | | - } |
---|
147 | | - } |
---|
148 | | - |
---|
149 | | - if (i < s-1) |
---|
150 | | - { |
---|
151 | | - cVector w = points.get(i+1); |
---|
152 | | - |
---|
153 | | - double dist = w.distance(v); |
---|
154 | | - |
---|
155 | | - if (mindist > dist) |
---|
156 | | - { |
---|
157 | | - mindist = dist; |
---|
158 | | - size = mindist*resizefactor; |
---|
159 | | - } |
---|
160 | | - } |
---|
161 | | - |
---|
162 | | - if (size < minimumSize) |
---|
163 | | - size = minimumSize; |
---|
164 | | - if (size > maximumSize) |
---|
165 | | - size = maximumSize; |
---|
166 | | - |
---|
167 | | - double tx = v.x; |
---|
168 | | - double ty = v.y; |
---|
169 | | - double tz = v.z; |
---|
170 | | - |
---|
171 | | - // if (tx == 0 && ty == 0 && tz == 0) |
---|
172 | | - // continue; |
---|
173 | | - |
---|
174 | | - gl.glMatrixMode(gl.GL_TEXTURE); |
---|
175 | | - gl.glPushMatrix(); |
---|
176 | | - texmat[12] = texmat[13] = texmat[14] = i; |
---|
177 | | - |
---|
178 | | - gl.glMultMatrixf(texmat, 0); |
---|
179 | | - |
---|
180 | | - gl.glMatrixMode(gl.GL_MODELVIEW); |
---|
181 | | - gl.glPushMatrix(); |
---|
182 | | - |
---|
183 | | - gl.glTranslated(tx,ty,tz); |
---|
184 | | - |
---|
185 | | - gl.glScaled(size,size,size); |
---|
186 | | - |
---|
187 | | -// float cr = colorBuf.get(index4); |
---|
188 | | -// float cg = colorBuf.get(index4+1); |
---|
189 | | -// float cb = colorBuf.get(index4+2); |
---|
190 | | -// float ca = colorBuf.get(index4+3); |
---|
191 | | -// |
---|
192 | | -// display.modelParams0[0] = r * cr; |
---|
193 | | -// display.modelParams0[1] = g * cg; |
---|
194 | | -// display.modelParams0[2] = b * cb; |
---|
195 | | -// |
---|
196 | | -// display.modelParams5[1] = opacity * ca; |
---|
197 | | -// |
---|
198 | | -// gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 0, display.modelParams0, 0); |
---|
199 | | -// gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 5, display.modelParams5, 0); |
---|
200 | | -// |
---|
201 | | -// RandomNode.globalseed = (int)sizeBuf.get(index3+2); // i; |
---|
202 | | -// RandomNode.globalseed2 = RandomNode.globalseed; |
---|
203 | | -// |
---|
204 | | -//// gl.glColor4f(cr,cg,cb,ca); |
---|
205 | | -// // gl.glScalef(1024/16,1024/16,1024/16); |
---|
206 | | - geo.Draw/*Node*/(display,null,selected, blocked); |
---|
207 | | - |
---|
208 | | - gl.glPopMatrix(); |
---|
209 | | - |
---|
210 | | - double step = size/4; // |
---|
211 | | - |
---|
212 | | - if (i == 0 || size == 0 || distancenext > 8*size || distancenext < step) |
---|
213 | | - continue; |
---|
214 | | - |
---|
215 | | - int nbsteps = (int)(distancenext/step); |
---|
216 | | - |
---|
217 | | - step = distancenext/nbsteps; |
---|
218 | | - |
---|
219 | | - cVector next = points.get(i-1); |
---|
220 | | - |
---|
221 | | - tmp.set(next); |
---|
222 | | - tmp.sub(v); |
---|
223 | | - tmp.normalize(); |
---|
224 | | - tmp.mul(step); |
---|
225 | | - |
---|
226 | | - // calculate next size |
---|
227 | | - mindist = Double.MAX_VALUE; |
---|
228 | | - |
---|
229 | | - double nextsize = minimumSize; |
---|
230 | | - |
---|
231 | | - if (i > 1) |
---|
232 | | - { |
---|
233 | | - cVector w = points.get(i-2); |
---|
234 | | - |
---|
235 | | - double dist = w.distance(next); |
---|
236 | | - |
---|
237 | | - if (mindist > dist) |
---|
238 | | - { |
---|
239 | | - mindist = dist; |
---|
240 | | - nextsize = mindist*resizefactor; |
---|
241 | | - } |
---|
242 | | - } |
---|
243 | | - |
---|
244 | | - double dist = v.distance(next); |
---|
245 | | - |
---|
246 | | - if (mindist > dist) |
---|
247 | | - { |
---|
248 | | - mindist = dist; |
---|
249 | | - nextsize = mindist*resizefactor; |
---|
250 | | - } |
---|
251 | | - |
---|
252 | | - if (nextsize < minimumSize) |
---|
253 | | - nextsize = minimumSize; |
---|
254 | | - if (nextsize > maximumSize) |
---|
255 | | - nextsize = maximumSize; |
---|
256 | | - // |
---|
257 | | - |
---|
258 | | - double count = 0; |
---|
259 | | - |
---|
260 | | - while (distancenext > 0.000000001) // step |
---|
261 | | - { |
---|
262 | | - gl.glPushMatrix(); |
---|
263 | | - |
---|
264 | | - gl.glTranslated(tx + tmp.x*count, ty + tmp.y*count, tz + tmp.z*count); |
---|
265 | | - |
---|
266 | | - double K = count/nbsteps; |
---|
267 | | - |
---|
268 | | - double intersize = K*nextsize + (1-K)*size; |
---|
269 | | - |
---|
270 | | - gl.glScaled(intersize,intersize,intersize); |
---|
271 | | - |
---|
272 | | - geo.Draw/*Node*/(display,null,selected,blocked); |
---|
273 | | - |
---|
274 | | - count++; |
---|
275 | | - |
---|
276 | | - distancenext -= step; |
---|
277 | | - |
---|
278 | | - gl.glPopMatrix(); |
---|
279 | | - } |
---|
280 | | - |
---|
281 | | - if (count != nbsteps) |
---|
282 | | - assert(count == nbsteps); |
---|
283 | | - |
---|
284 | | - // gl.glScalef(16.0f/1024,16.0f/1024,16.0f/1024); |
---|
285 | | - //gl.glTranslatef(-tx,-ty,-tz); |
---|
286 | | - |
---|
287 | | - gl.glMatrixMode(gl.GL_TEXTURE); |
---|
288 | | - gl.glPopMatrix(); |
---|
289 | | - } |
---|
290 | | - |
---|
291 | | - if (!cf) |
---|
292 | | - gl.glDisable(gl.GL_CULL_FACE); |
---|
293 | | - |
---|
294 | | -// display.modelParams0[0] = r; |
---|
295 | | -// display.modelParams0[1] = g; |
---|
296 | | -// display.modelParams0[2] = b; |
---|
297 | | -// |
---|
298 | | -// display.modelParams5[1] = opacity; |
---|
299 | | -// |
---|
300 | | -// gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 0, display.modelParams0, 0); |
---|
301 | | -// gl.glProgramEnvParameter4fvARB(gl.GL_FRAGMENT_PROGRAM_ARB, 5, display.modelParams5, 0); |
---|
302 | | - |
---|
303 | | - gl.glMatrixMode(gl.GL_MODELVIEW); |
---|
304 | | - } |
---|
305 | | - |
---|
306 | | - |
---|
307 | 106 | void createEditWindow(GroupEditor callee, boolean newWindow) |
---|
308 | 107 | { |
---|
309 | 108 | //editWindow = (new SphereEditor(this, deepCopy(), callee)).GetEditor(); |
---|