Normand Briere
2018-07-08 f4160780a4d8278920b99ada1050f320d6e30a73
GroupEditor.java
....@@ -14,7 +14,7 @@
1414
1515 //import buoy.widget.BFileChooser;
1616
17
-class GroupEditor extends ObjEditor implements iParse, //iCallBack,
17
+class GroupEditor extends ObjEditor implements //iParse, //iCallBack,
1818 ObjectUI,
1919 Runnable,
2020 ActionListener,
....@@ -83,7 +83,7 @@
8383
8484 void CloneSelection(boolean supports)
8585 {
86
- // Object3D keep = GraphreeD.clipboard;
86
+ // Object3D keep = GrafreeD.clipboard;
8787 //Object3D obj;
8888 for (int i=0; i<group.selection.size(); i++)// Enumeration e = group.selection.elements(); e.hasMoreElements();)
8989 {
....@@ -97,14 +97,14 @@
9797
9898 void CloneClipboard(boolean supports)
9999 {
100
- assert(GraphreeD.clipboard.parent == null);
101
- Object3D /*Composite*/ keepparent = GraphreeD.clipboard.get(0).parent;
102
- GraphreeD.clipboard.get(0).parent = null; // Avoid copy?
103
- if (LA.isIdentity(GraphreeD.clipboard.toParent))
104
- makeSomething(CloneObject(GraphreeD.clipboard.get(0), false));
100
+ assert(GrafreeD.clipboard.parent == null);
101
+ Object3D /*Composite*/ keepparent = GrafreeD.clipboard.get(0).parent;
102
+ GrafreeD.clipboard.get(0).parent = null; // Avoid copy?
103
+ if (LA.isIdentity(GrafreeD.clipboard.toParent))
104
+ makeSomething(CloneObject(GrafreeD.clipboard.get(0), false));
105105 else
106
- makeSomething(CloneObject(GraphreeD.clipboard, false));
107
- GraphreeD.clipboard.get(0).parent = keepparent;
106
+ makeSomething(CloneObject(GrafreeD.clipboard, false));
107
+ GrafreeD.clipboard.get(0).parent = keepparent;
108108 }
109109
110110 static Object3D CloneObject(Object3D obj, boolean supports)
....@@ -118,7 +118,7 @@
118118 // obj.support = null;
119119 if (!supports)
120120 obj.SaveSupports();
121
- Object3D clone = (Object3D)GraphreeD.clone(obj);
121
+ Object3D clone = (Object3D)GrafreeD.clone(obj);
122122 obj.parent = parent;
123123 // obj.support = support;
124124 // clone.support = support; // aout 2013
....@@ -188,8 +188,9 @@
188188 clearItem.addActionListener(this);
189189 clearAllItem = menu.add(new MenuItem("Clear All"));
190190 clearAllItem.addActionListener(this);
191
- menu.add("-");
192
- resetMeshItem = menu.add(new MenuItem("Reset All"));
191
+
192
+ oe.menuBar.add(menu = new Menu("Setting"));
193
+ resetMeshItem = menu.add(new MenuItem("Reset All"));
193194 resetMeshItem.addActionListener(this);
194195 stepAllItem = menu.add(new MenuItem("Step All"));
195196 stepAllItem.addActionListener(this);
....@@ -218,18 +219,24 @@
218219 resetsupportItem.addActionListener(this);
219220 linkverticesItem = menu.add(new MenuItem("Link to Support"));
220221 linkverticesItem.addActionListener(this);
222
+ relinkverticesItem = menu.add(new MenuItem("Re-link to Support"));
223
+ relinkverticesItem.addActionListener(this);
221224 setMasterItem = menu.add(new MenuItem("Set Master Mesh"));
222225 setMasterItem.addActionListener(this);
223226
224
- oe.menuBar.add(menu = new Menu("Object"));
227
+ oe.menuBar.add(menu = new Menu("Group"));
225228 grabItem = menu.add(new MenuItem("Grab"));
226229 grabItem.addActionListener(this);
227
- frontItem = menu.add(new MenuItem("Front"));
228
- frontItem.addActionListener(this);
229230 backItem = menu.add(new MenuItem("Back"));
230231 backItem.addActionListener(this);
232
+ frontItem = menu.add(new MenuItem("Front"));
233
+ frontItem.addActionListener(this);
231234 compositeItem = menu.add(new MenuItem("Composite"));
232235 compositeItem.addActionListener(this);
236
+ hideItem = menu.add(new MenuItem("Hide"));
237
+ hideItem.addActionListener(this);
238
+ ungroupItem = menu.add(new MenuItem("Ungroup"));
239
+ ungroupItem.addActionListener(this);
233240 menu.add("-");
234241 randomItem = menu.add(new MenuItem("Random"));
235242 randomItem.addActionListener(this);
....@@ -247,9 +254,12 @@
247254 scriptNodeItem.addActionListener(this);
248255 cameraItem = menu.add(new MenuItem("Camera"));
249256 cameraItem.addActionListener(this);
250
- menu.add("-");
257
+
258
+ oe.menuBar.add(menu = new Menu("Object"));
251259 textureItem = menu.add(new MenuItem("Texture"));
252260 textureItem.addActionListener(this);
261
+ billboardItem = menu.add(new MenuItem("Billboard"));
262
+ billboardItem.addActionListener(this);
253263 csgItem = menu.add(new MenuItem("CSG"));
254264 csgItem.addActionListener(this);
255265 shadowXItem = menu.add(new MenuItem("Shadow X"));
....@@ -267,14 +277,12 @@
267277 pointflowItem = menu.add(new MenuItem("Point Flow"));
268278 pointflowItem.addActionListener(this);
269279 menu.add("-");
270
- transformgeometryItem = menu.add(new MenuItem("Transform Geometry"));
271
- transformgeometryItem.addActionListener(this);
272280 resetTransformItem = menu.add(new MenuItem("Reset Transform"));
273281 resetTransformItem.addActionListener(this);
274282 resetCentroidItem = menu.add(new MenuItem("Reset Centroid"));
275283 resetCentroidItem.addActionListener(this);
276
- ungroupItem = menu.add(new MenuItem("Ungroup"));
277
- ungroupItem.addActionListener(this);
284
+ transformgeometryItem = menu.add(new MenuItem("Transform Geometry"));
285
+ transformgeometryItem.addActionListener(this);
278286
279287 oe.menuBar.add(menu = new Menu("Geometry"));
280288 genUVItem = menu.add(new MenuItem("Generate UV"));
....@@ -283,6 +291,10 @@
283291 genNormalsORGANItem.addActionListener(this);
284292 genNormalsCADItem = menu.add(new MenuItem("CAD Normals"));
285293 genNormalsCADItem.addActionListener(this);
294
+ genNormalsMESHItem = menu.add(new MenuItem("Mesh Normals"));
295
+ genNormalsMESHItem.addActionListener(this);
296
+ genNormalsMINEItem = menu.add(new MenuItem("My Normals"));
297
+ genNormalsMINEItem.addActionListener(this);
286298 stripifyItem = menu.add(new MenuItem("Stripify"));
287299 stripifyItem.addActionListener(this);
288300 unstripifyItem = menu.add(new MenuItem("Unstripify"));
....@@ -292,8 +304,6 @@
292304 untrimItem = menu.add(new MenuItem("Untrim"));
293305 untrimItem.addActionListener(this);
294306 menu.add("-");
295
- clearMaterialsItem = menu.add(new MenuItem("Clear Materials"));
296
- clearMaterialsItem.addActionListener(this);
297307 clearColorsItem = menu.add(new MenuItem("Clear AO"));
298308 clearColorsItem.addActionListener(this);
299309 reverseNormalsItem = menu.add(new MenuItem("Reverse Normals"));
....@@ -310,6 +320,10 @@
310320 smoothMeshItem.addActionListener(this);
311321 clipMeshItem = menu.add(new MenuItem("Clip mesh"));
312322 clipMeshItem.addActionListener(this);
323
+
324
+ oe.menuBar.add(menu = new Menu("Attributes"));
325
+ clearMaterialsItem = menu.add(new MenuItem("Clear Materials"));
326
+ clearMaterialsItem.addActionListener(this);
313327 menu.add("-");
314328 liveleavesItem = menu.add(new MenuItem("Live Leaves"));
315329 liveleavesItem.addActionListener(this);
....@@ -332,27 +346,18 @@
332346 flipVItem.addActionListener(this);
333347 unflipVItem = menu.add(new MenuItem("Unflip V"));
334348 unflipVItem.addActionListener(this);
335
- lowTexturesItem = menu.add(new MenuItem("Low Texture"));
349
+ lowTexturesItem = menu.add(new MenuItem("Low Texture (256)"));
336350 lowTexturesItem.addActionListener(this);
337
- normalTexturesItem = menu.add(new MenuItem("Normal Texture"));
351
+ normalTexturesItem = menu.add(new MenuItem("Normal Texture (512)"));
338352 normalTexturesItem.addActionListener(this);
339
- highTexturesItem = menu.add(new MenuItem("High Texture"));
353
+ highTexturesItem = menu.add(new MenuItem("High Texture (1024)"));
340354 highTexturesItem.addActionListener(this);
341
- veryhighTexturesItem = menu.add(new MenuItem("Very high Texture"));
355
+ veryhighTexturesItem = menu.add(new MenuItem("Very high Texture (2048)"));
342356 veryhighTexturesItem.addActionListener(this);
343
- maxTexturesItem = menu.add(new MenuItem("Max Texture"));
357
+ maxTexturesItem = menu.add(new MenuItem("Max Texture (4096)"));
344358 maxTexturesItem.addActionListener(this);
345
- panoTexturesItem = menu.add(new MenuItem("Panoramic Texture"));
359
+ panoTexturesItem = menu.add(new MenuItem("Panoramic Texture (8192)"));
346360 panoTexturesItem.addActionListener(this);
347
- menu.add("-");
348
- extractGeometriesItem = menu.add(new MenuItem("Link Geometry"));
349
- extractGeometriesItem.addActionListener(this);
350
- cloneGeometriesItem = menu.add(new MenuItem("Clone Geometry"));
351
- cloneGeometriesItem.addActionListener(this);
352
- shareGeometriesItem = menu.add(new MenuItem("Share Geometry"));
353
- shareGeometriesItem.addActionListener(this);
354
- mergeGeometriesItem = menu.add(new MenuItem("Merge Geometry"));
355
- mergeGeometriesItem.addActionListener(this);
356361
357362 oe.menuBar.add(menu = new Menu("Selection"));
358363 attachPigmentItem = menu.add(new MenuItem("Attach Pigment..."));
....@@ -370,9 +375,31 @@
370375 sortbysizeItem.addActionListener(this);
371376 sortbynameItem = menu.add(new MenuItem("Sort by name"));
372377 sortbynameItem.addActionListener(this);
378
+ menu.add("-");
379
+ extractGeometriesItem = menu.add(new MenuItem("Link Geometry"));
380
+ extractGeometriesItem.addActionListener(this);
381
+ cloneGeometriesItem = menu.add(new MenuItem("Clone Geometry"));
382
+ cloneGeometriesItem.addActionListener(this);
383
+ shareGeometriesItem = menu.add(new MenuItem("Share Geometry"));
384
+ shareGeometriesItem.addActionListener(this);
385
+ mergeGeometriesItem = menu.add(new MenuItem("Merge Geometry"));
386
+ mergeGeometriesItem.addActionListener(this);
387
+
373388 oe.menuBar.add(menu = new Menu("Insert"));
374389 buildCreateMenu(menu);
375
- oe.menuBar.add(menu = new Menu("Tools"));
390
+
391
+
392
+ oe.menuBar.add(menu = new Menu("Include"));
393
+ importGFDItem = menu.add(new MenuItem("GrafreeD Object..."));
394
+ importGFDItem.addActionListener(this);
395
+ importVRMLX3DItem = menu.add(new MenuItem("VRML/X3D Object..."));
396
+ importVRMLX3DItem.addActionListener(this);
397
+ importOBJItem = menu.add(new MenuItem("OBJ Object..."));
398
+ importOBJItem.addActionListener(this);
399
+ import3DSItem = menu.add(new MenuItem("3DS Object..."));
400
+ import3DSItem.addActionListener(this);
401
+
402
+ oe.menuBar.add(menu = new Menu("Tools"));
376403 buildToolsMenu(menu);
377404 }
378405
....@@ -493,6 +520,9 @@
493520
494521 oe.toolbarPanel.add(flashSelectionButton = new cButton(" ? ")); //, oe.aConstraints);
495522 flashSelectionButton.addActionListener(this);
523
+
524
+ oe.toolbarPanel.add(new cButton(" ", false));
525
+
496526 oe.aConstraints.gridx += 1;
497527 oe.aConstraints.weighty = 0;
498528 oe.aConstraints.gridwidth = 1;
....@@ -688,8 +718,7 @@
688718 dropAttributes |= Object3D.TEXTURE;
689719 else
690720 dropAttributes &= ~Object3D.TEXTURE;
691
- }
692
- else if(e.getSource() == liveCB)
721
+ } else if(e.getSource() == liveCB)
693722 {
694723 cameraView.ToggleLive();
695724 }
....@@ -1002,6 +1031,8 @@
10021031
10031032 void buildCreateMenu(Menu menu)
10041033 {
1034
+ //heightFieldItem = menu.add(new MenuItem("Height Field"));
1035
+ //heightFieldItem.addActionListener(this);
10051036 gridItem = menu.add(new MenuItem("Grid"));
10061037 gridItem.addActionListener(this);
10071038 rectoidItem = menu.add(new MenuItem("Box"));
....@@ -1014,6 +1045,8 @@
10141045 torusItem.addActionListener(this);
10151046 superItem = menu.add(new MenuItem("Superellipsoid"));
10161047 superItem.addActionListener(this);
1048
+ kleinItem = menu.add(new MenuItem("Klein Bottle"));
1049
+ kleinItem.addActionListener(this);
10171050 particleItem = menu.add(new MenuItem("Particle system"));
10181051 particleItem.addActionListener(this);
10191052 ragdollItem = menu.add(new MenuItem("Rag Walk"));
....@@ -1048,15 +1081,6 @@
10481081 doubleItem.addActionListener(this);
10491082 tripleItem = menu.add(new MenuItem("Trident"));
10501083 tripleItem.addActionListener(this);
1051
- menu.add("-");
1052
- importGFDItem = menu.add(new MenuItem("GraphreeD Object..."));
1053
- importGFDItem.addActionListener(this);
1054
- importVRMLX3DItem = menu.add(new MenuItem("VRML/X3D Object..."));
1055
- importVRMLX3DItem.addActionListener(this);
1056
- importOBJItem = menu.add(new MenuItem("OBJ Object..."));
1057
- importOBJItem.addActionListener(this);
1058
- import3DSItem = menu.add(new MenuItem("3DS Object..."));
1059
- import3DSItem.addActionListener(this);
10601084 }
10611085
10621086 void buildToolsMenu(Menu menu)
....@@ -1068,6 +1092,8 @@
10681092 menu.add("-");
10691093 parseverticesItem = menu.add(new MenuItem("Multiplicity"));
10701094 parseverticesItem.addActionListener(this);
1095
+ textureFieldItem = menu.add(new MenuItem("Texture Field"));
1096
+ textureFieldItem.addActionListener(this);
10711097 alignItem = menu.add(new MenuItem("Align"));
10721098 alignItem.addActionListener(this);
10731099 mirrorItem = menu.add(new MenuItem("Mirror Poses"));
....@@ -1429,9 +1455,9 @@
14291455
14301456 void Overwrite(int mask)
14311457 {
1432
- if (/*group.selection.size() == 1 &&*/ GraphreeD.clipboard.size() == 1)
1458
+ if (/*group.selection.size() == 1 &&*/ GrafreeD.clipboard.size() == 1)
14331459 {
1434
- Object3D content = GraphreeD.clipboard.get(0);
1460
+ Object3D content = GrafreeD.clipboard.get(0);
14351461
14361462 if (content instanceof cGroup && ((cGroup)content).transientlink )
14371463 content = ((cGroup)content).get(0);
....@@ -1521,6 +1547,46 @@
15211547 makeSomething(ragdoll);
15221548 //makeSomething(new VehicleDemo());
15231549 } else
1550
+ /*
1551
+ */
1552
+ if (event.getSource() == heightFieldItem)
1553
+ {
1554
+ Object3D obj = new Object3D();
1555
+
1556
+ obj.CreateMaterial();
1557
+ obj.bRep = new BoundaryRep();
1558
+
1559
+ obj.bRep.CreateMesh(new iHeightField()
1560
+ {
1561
+ public double f(double x, double y)
1562
+ {
1563
+ // The Mandelbrot set is represented by coloring
1564
+ // each point (x,y) according to the number of
1565
+ // iterations it takes before the while loop in
1566
+ // this method ends. For points that are actually
1567
+ // in the Mandelbrot set, or very close to it, the
1568
+ // count will reach the maximum value, 80. These
1569
+ // points will be colored purple. All other colors
1570
+ // represent points that are definitely NOT in the set.
1571
+ x -= 600;
1572
+ y -= 500;
1573
+ x /= 200;
1574
+ y /= 200;
1575
+ int count = 0;
1576
+ double zx = x;
1577
+ double zy = y;
1578
+ while (count < 80 && Math.abs(x) < 100 && Math.abs(zy) < 100) {
1579
+ double new_zx = zx*zx - zy*zy + x;
1580
+ zy = 2*zx*zy + y;
1581
+ zx = new_zx;
1582
+ count++;
1583
+ }
1584
+ return count; // Math.sqrt(count);
1585
+ }
1586
+ }, 1000,1000);
1587
+
1588
+ makeSomething(obj);
1589
+ } else
15241590 if (event.getSource() == gridItem)
15251591 {
15261592 makeSomething(new Grid());
....@@ -1540,6 +1606,10 @@
15401606 if (event.getSource() == superItem)
15411607 {
15421608 makeSomething(new Superellipsoid());
1609
+ } else
1610
+ if (event.getSource() == kleinItem)
1611
+ {
1612
+ makeSomething(new Klein());
15431613 } else
15441614 if (event.getSource() == blobItem)
15451615 {
....@@ -1570,7 +1640,7 @@
15701640 LA.matConcat(obj.toParent, cameraView.renderCamera.fromParent, obj.toParent);
15711641 LA.matInvert(obj.toParent, obj.fromParent);
15721642 */
1573
- makeSomething(new CheckerIG());
1643
+ makeSomething(new Checker());
15741644 } else
15751645 if (event.getSource() == meshItem)
15761646 {
....@@ -1726,7 +1796,7 @@
17261796 if (event.getSource() == invariantsItem)
17271797 {
17281798 System.out.println("Invariants:");
1729
- GraphreeD.theApplet3D.universe.invariants();
1799
+ GrafreeD.grafreeD.universe.invariants();
17301800 } else
17311801 if (event.getSource() == memoryItem)
17321802 {
....@@ -1796,10 +1866,10 @@
17961866 } else
17971867 if (event.getSource() == duplicateItem)
17981868 {
1799
- Object3D keep = GraphreeD.clipboard;
1869
+ Object3D keep = GrafreeD.clipboard;
18001870 loadClipboard(false);
18011871 paste(false);
1802
- GraphreeD.clipboard = keep;
1872
+ GrafreeD.clipboard = keep;
18031873 } else
18041874 if (event.getSource() == cloneItem)
18051875 {
....@@ -1843,8 +1913,9 @@
18431913 } else
18441914 if (event.getSource() == overwriteMatItem)
18451915 {
1916
+ /* july 2015
18461917 if ((dropAttributes & Object3D.TEXTURE) == 0)
1847
- Overwrite(Object3D.MATERIAL);
1918
+ Overwrite(Object3D.MATERIAL | Object3D.COLOR);
18481919 else
18491920 {
18501921 if ((dropAttributes & Object3D.COLOR) == 0 && (dropAttributes & Object3D.MATERIAL) == 0)
....@@ -1856,13 +1927,16 @@
18561927 Overwrite(Object3D.MATERIAL | Object3D.TEXTURE);
18571928 }
18581929 }
1930
+ */
1931
+
1932
+ Overwrite(dropAttributes);
18591933 }
18601934 if (event.getSource() == overwriteGeoItem)
18611935 {
18621936 Overwrite(Object3D.GEOMETRY);
1863
-// if (/*group.selection.size() == 1 &&*/ GraphreeD.clipboard.size() == 1)
1937
+// if (/*group.selection.size() == 1 &&*/ GrafreeD.clipboard.size() == 1)
18641938 // {
1865
-// Object3D content = GraphreeD.clipboard.get(0);
1939
+// Object3D content = GrafreeD.clipboard.get(0);
18661940 //
18671941 // if (content instanceof cGroup && ((cGroup)content).transientlink )
18681942 // content = ((cGroup)content).get(0);
....@@ -1945,23 +2019,28 @@
19452019 if (group.selection.size() == 1)
19462020 one = true;
19472021
2022
+ Object3D merge = null;
2023
+
19482024 Object3D content = new cGroup();
19492025
19502026 for (int i=0; i<group.selection.size(); i++)
19512027 {
1952
- Object3D sel = new Merge(group.selection.get(i));
2028
+ merge = new Merge(group.selection.get(i));
19532029
19542030 if (one)
1955
- makeSomething(sel, false);
2031
+ makeSomething(merge, false);
19562032 else
1957
- content.addChild(sel);
2033
+ content.addChild(merge);
19582034 }
19592035
19602036 if (!one)
1961
- makeSomething(content, false);
1962
-
1963
- ResetModel();
1964
- refreshContents();
2037
+ makeSomething(content, true);
2038
+ else
2039
+ {
2040
+ ResetModel();
2041
+ Select(merge.GetTreePath(), true, false); // unselect... false);
2042
+ refreshContents();
2043
+ }
19652044 } else
19662045 if (event.getSource() == mergeGeometriesItem)
19672046 {
....@@ -1995,9 +2074,9 @@
19952074 } else
19962075 if (event.getSource() == linkverticesItem)
19972076 {
1998
-// if (group.selection.size() == 1 && GraphreeD.clipboard.size() == 1)
2077
+// if (group.selection.size() == 1 && GrafreeD.clipboard.size() == 1)
19992078 // {
2000
-// Object3D content = GraphreeD.clipboard.get(0);
2079
+// Object3D content = GrafreeD.clipboard.get(0);
20012080 //
20022081 // if (content instanceof cGroup && ((cGroup)content).transientlink )
20032082 // content = ((cGroup)content).get(0);
....@@ -2006,9 +2085,9 @@
20062085 // group.selection.get(0).setMasterThis(content); // should be identity
20072086 // refreshContents();
20082087 // }
2009
- if (/*group.selection.size() == 1 &&*/ GraphreeD.clipboard.size() == 1)
2088
+ if (/*group.selection.size() == 1 &&*/ GrafreeD.clipboard.size() == 1)
20102089 {
2011
- Object3D content = GraphreeD.clipboard.get(0);
2090
+ Object3D content = GrafreeD.clipboard.get(0);
20122091
20132092 if (content instanceof cGroup && ((cGroup)content).transientlink )
20142093 content = ((cGroup)content).get(0);
....@@ -2038,6 +2117,15 @@
20382117
20392118 refreshContents();
20402119 } else
2120
+ if (event.getSource() == relinkverticesItem)
2121
+ {
2122
+ boolean random = CameraPane.RANDOM;
2123
+ CameraPane.RANDOM = false; // parse all random nodes
2124
+ group.selection.RelinkToSupport();
2125
+ CameraPane.RANDOM = random;
2126
+
2127
+ refreshContents();
2128
+ } else
20412129 if (event.getSource() == resetreferencesItem)
20422130 {
20432131 for (int i=0; i<group.selection.size(); i++)
....@@ -2049,9 +2137,9 @@
20492137 } else
20502138 if (event.getSource() == setMasterItem)
20512139 {
2052
- if (group.selection.size() == 1 && GraphreeD.clipboard.size() == 1)
2140
+ if (group.selection.size() == 1 && GrafreeD.clipboard.size() == 1)
20532141 {
2054
- Object3D content = GraphreeD.clipboard.get(0);
2142
+ Object3D content = GrafreeD.clipboard.get(0);
20552143
20562144 if (content instanceof cGroup && ((cGroup)content).transientlink )
20572145 content = ((cGroup)content).get(0);
....@@ -2064,9 +2152,9 @@
20642152 {
20652153 if (group.selection.size() == 1)
20662154 {
2067
- if (GraphreeD.clipboard.size() == 1)
2155
+ if (GrafreeD.clipboard.size() == 1)
20682156 {
2069
- Object3D content = GraphreeD.clipboard.get(0);
2157
+ Object3D content = GrafreeD.clipboard.get(0);
20702158
20712159 if (content instanceof cGroup && ((cGroup)content).transientlink )
20722160 content = ((cGroup)content).get(0);
....@@ -2106,6 +2194,10 @@
21062194 if (event.getSource() == grabItem)
21072195 {
21082196 group(new cGroup(), true);
2197
+ } else
2198
+ if (event.getSource() == hideItem)
2199
+ {
2200
+ group(new HiddenObject());
21092201 } else
21102202 if (event.getSource() == frontItem)
21112203 {
....@@ -2229,6 +2321,10 @@
22292321 {
22302322 group(new TextureNode());
22312323 } else
2324
+ if (event.getSource() == billboardItem)
2325
+ {
2326
+ group(new BillboardNode());
2327
+ } else
22322328 if (event.getSource() == shadowXItem)
22332329 {
22342330 CastShadow(0);
....@@ -2243,7 +2339,15 @@
22432339 } else
22442340 if (event.getSource() == ungroupItem)
22452341 {
2246
- ungroup();
2342
+ //ungroup();
2343
+ for (int i=0; i<group.selection.size(); i++)
2344
+ {
2345
+ Ungroup(group.selection.get(i));
2346
+ }
2347
+
2348
+ ClearSelection(false);
2349
+
2350
+ refreshContents();
22472351 } else
22482352 if (event.getSource() == genUVItem)
22492353 {
....@@ -2253,9 +2357,17 @@
22532357 {
22542358 GenNormals(true);
22552359 } else
2360
+ if (event.getSource() == genNormalsMESHItem)
2361
+ {
2362
+ GenNormals(true); // TODO
2363
+ } else
22562364 if (event.getSource() == genNormalsORGANItem)
22572365 {
22582366 GenNormals(false);
2367
+ } else
2368
+ if (event.getSource() == genNormalsMINEItem)
2369
+ {
2370
+ GenNormalsMINE();
22592371 } else
22602372 if (event.getSource() == stripifyItem)
22612373 {
....@@ -2352,6 +2464,10 @@
23522464 if (event.getSource() == parseverticesItem)
23532465 {
23542466 ParseVertices();
2467
+ } else
2468
+ if (event.getSource() == textureFieldItem)
2469
+ {
2470
+ TextureVertices();
23552471 } else
23562472 if (event.getSource() == alignItem)
23572473 {
....@@ -2524,8 +2640,8 @@
25242640 // bug
25252641 //gridPanel.setDividerLocation(1.0);
25262642 //bigPanel.setDividerLocation(0.0);
2527
- bigThree.remove(jtp);
2528
- bigThree.remove(cameraPanel);
2643
+ bigThree.remove(scenePanel);
2644
+ bigThree.remove(centralPanel);
25292645 bigThree.remove(XYZPanel);
25302646 aWindowConstraints.gridx = 0;
25312647 aWindowConstraints.gridy = 0;
....@@ -2540,7 +2656,7 @@
25402656 // aConstraints.gridheight = 3;
25412657 aWindowConstraints.gridx = 1;
25422658 aWindowConstraints.fill = GridBagConstraints.BOTH;
2543
- bigThree.add(cameraPanel, aWindowConstraints);
2659
+ bigThree.add(centralPanel, aWindowConstraints);
25442660 aWindowConstraints.weightx = 0;
25452661 aWindowConstraints.gridx = 4;
25462662 aWindowConstraints.gridwidth = 1;
....@@ -2552,8 +2668,8 @@
25522668 if (event.getSource() == threeButton)
25532669 {
25542670 radio.layout = threeButton;
2555
- bigThree.remove(jtp);
2556
- bigThree.remove(cameraPanel);
2671
+ bigThree.remove(scenePanel);
2672
+ bigThree.remove(centralPanel);
25572673 bigThree.remove(XYZPanel);
25582674 aWindowConstraints.gridx = 0;
25592675 aWindowConstraints.gridy = 0;
....@@ -2568,7 +2684,7 @@
25682684 // aConstraints.gridheight = 3;
25692685 aWindowConstraints.gridx = 1;
25702686 aWindowConstraints.fill = GridBagConstraints.BOTH;
2571
- bigThree.add(cameraPanel, aWindowConstraints);
2687
+ bigThree.add(centralPanel, aWindowConstraints);
25722688 aWindowConstraints.weightx = 0;
25732689 aWindowConstraints.gridx = 4;
25742690 aWindowConstraints.gridwidth = 1;
....@@ -2580,8 +2696,8 @@
25802696 if (event.getSource() == fourButton)
25812697 {
25822698 radio.layout = fourButton;
2583
- bigThree.remove(jtp);
2584
- bigThree.remove(cameraPanel);
2699
+ bigThree.remove(scenePanel);
2700
+ bigThree.remove(centralPanel);
25852701 bigThree.remove(XYZPanel);
25862702 aWindowConstraints.gridx = 0;
25872703 aWindowConstraints.gridy = 0;
....@@ -2590,7 +2706,7 @@
25902706 aWindowConstraints.fill = GridBagConstraints.BOTH;
25912707 aWindowConstraints.weightx = 1;
25922708 aWindowConstraints.weighty = 1;
2593
- bigThree.add(jtp, aWindowConstraints);
2709
+ bigThree.add(scenePanel, aWindowConstraints);
25942710 aWindowConstraints.weightx = 1;
25952711 aWindowConstraints.gridwidth = 3;
25962712 // aConstraints.gridheight = 3;
....@@ -2608,8 +2724,8 @@
26082724 if (event.getSource() == sixButton)
26092725 {
26102726 radio.layout = sixButton;
2611
- bigThree.remove(jtp);
2612
- bigThree.remove(cameraPanel);
2727
+ bigThree.remove(scenePanel);
2728
+ bigThree.remove(centralPanel);
26132729 bigThree.remove(XYZPanel);
26142730 aWindowConstraints.gridx = 0;
26152731 aWindowConstraints.gridy = 0;
....@@ -2618,13 +2734,13 @@
26182734 aWindowConstraints.fill = GridBagConstraints.VERTICAL;
26192735 aWindowConstraints.weightx = 0;
26202736 aWindowConstraints.weighty = 1;
2621
- bigThree.add(jtp, aWindowConstraints);
2737
+ bigThree.add(scenePanel, aWindowConstraints);
26222738 aWindowConstraints.weightx = 1;
26232739 aWindowConstraints.gridwidth = 3;
26242740 // aWindowConstraints.gridheight = 3;
26252741 aWindowConstraints.gridx = 1;
26262742 aWindowConstraints.fill = GridBagConstraints.BOTH;
2627
- bigThree.add(cameraPanel, aWindowConstraints);
2743
+ bigThree.add(centralPanel, aWindowConstraints);
26282744 aWindowConstraints.weightx = 0;
26292745 aWindowConstraints.gridx = 4;
26302746 aWindowConstraints.gridwidth = 1;
....@@ -2636,8 +2752,8 @@
26362752 if (event.getSource() == sevenButton)
26372753 {
26382754 radio.layout = sevenButton;
2639
- bigThree.remove(jtp);
2640
- bigThree.remove(cameraPanel);
2755
+ bigThree.remove(scenePanel);
2756
+ bigThree.remove(centralPanel);
26412757 bigThree.remove(XYZPanel);
26422758 aWindowConstraints.gridx = 0;
26432759 aWindowConstraints.gridy = 0;
....@@ -2646,13 +2762,13 @@
26462762 aWindowConstraints.fill = GridBagConstraints.VERTICAL;
26472763 aWindowConstraints.weightx = 0;
26482764 aWindowConstraints.weighty = 1;
2649
- bigThree.add(jtp, aWindowConstraints);
2765
+ bigThree.add(scenePanel, aWindowConstraints);
26502766 aWindowConstraints.weightx = 1;
26512767 aWindowConstraints.gridwidth = 3;
26522768 // aWindowConstraints.gridheight = 3;
26532769 aWindowConstraints.gridx = 1;
26542770 aWindowConstraints.fill = GridBagConstraints.BOTH;
2655
- bigThree.add(cameraPanel, aWindowConstraints);
2771
+ bigThree.add(centralPanel, aWindowConstraints);
26562772 aWindowConstraints.weightx = 0;
26572773 aWindowConstraints.gridx = 4;
26582774 aWindowConstraints.gridwidth = 1;
....@@ -2750,7 +2866,7 @@
27502866 if (event.getSource() == unselectButton)
27512867 {
27522868 objEditor.jTree.clearSelection();
2753
- // ?? oct 2012 GraphreeD.clipboard.clear();
2869
+ // ?? oct 2012 GrafreeD.clipboard.clear();
27542870 objEditor.ResetSliders();
27552871 refreshContents(true);
27562872 } else
....@@ -3065,9 +3181,9 @@
30653181 obj = (Object3D)e.nextElement();
30663182
30673183 System.out.println("Object is: " + obj);
3068
- GraphreeD.AnalyzeObject(obj);
3184
+ GrafreeD.AnalyzeObject(obj);
30693185 System.out.println("Boundary rep: " + obj.bRep);
3070
- GraphreeD.AnalyzeObject(obj.bRep);
3186
+ GrafreeD.AnalyzeObject(obj.bRep);
30713187
30723188 // System.err.println((size/1024) + " KB is the size of " + obj);
30733189 }
....@@ -3109,6 +3225,13 @@
31093225 void GenNormals(boolean crease)
31103226 {
31113227 group.GenNormalsS(crease);
3228
+
3229
+ refreshContents();
3230
+ }
3231
+
3232
+ void GenNormalsMINE()
3233
+ {
3234
+ group.selection.GenNormalsMINE();
31123235
31133236 refreshContents();
31143237 }
....@@ -3157,104 +3280,250 @@
31573280
31583281 //Object3D buffer;
31593282 cVector temp = new cVector();
3160
- BoundaryRep temprep;
3161
- Object3D nodes;
3162
- Vector<Vertex> vertices;
3163
-
3164
- public void Vertex(Object3D node, Vertex v)
3165
- {
3166
- vertices.add(v);
3167
- nodes.addElement(node);
3168
-
3169
- if (temprep.GetCache(v) != null)
3170
- {
3171
- temprep.Remove(v);
3172
- }
3173
- else
3174
- {
3175
- temprep.Remember(v);
3176
- }
3177
- }
3178
-
3179
- public void Face(Object3D node, Face f)
3180
- {
3181
-
3182
- }
3183
-
3283
+// BoundaryRep temprep;
3284
+// Object3D nodes;
3285
+// Vector<Vertex> vertices;
3286
+//
3287
+// cGroup buffer;
3288
+//
3289
+// public void Vertex(Object3D node, Vertex v)
3290
+// {
3291
+//// vertices.add(v);
3292
+//// nodes.addElement(node);
3293
+////
3294
+//// if (temprep.GetCache(v) != null)
3295
+//// {
3296
+//// temprep.Remove(v);
3297
+//// } else
3298
+//// {
3299
+//// temprep.Remember(v);
3300
+//// }
3301
+//
3302
+// //Object3D node = nodes.get(index);
3303
+// temp.set(v); // vertices.get(index)); // temprep.GetVertex(k));
3304
+// // System.out.println("temp = " + temp.x + ", " + temp.y + ", " + temp.z);
3305
+//
3306
+// LA.xformPos(temp, node.GlobalTransformInv(), temp);
3307
+//
3308
+// // System.out.println("tem+ = " + temp.x + ", " + temp.y + ", " + temp.z);
3309
+//
3310
+// cGroup g = new cGroup();
3311
+//
3312
+// if (g.toParent == null)
3313
+// {
3314
+// g.toParent = LA.newMatrix();
3315
+// g.fromParent = LA.newMatrix();
3316
+// }
3317
+// LA.matTranslate(g.toParent, temp.x, temp.y, temp.z);
3318
+// LA.matTranslate(g.fromParent, -temp.x, -temp.y, -temp.z);
3319
+//
3320
+// g.add(GrafreeD.clipboard);
3321
+//
3322
+// buffer.add(g);
3323
+// }
3324
+//
3325
+// public void Face(Object3D node, Face f)
3326
+// {
3327
+//
3328
+// }
3329
+//
3330
+// void ParseVerticesOld() // ??
3331
+// {
3332
+// //if (group.selection.size() != 1)
3333
+// // return;
3334
+//
3335
+// temprep = new BoundaryRep();
3336
+// nodes = new Object3D();
3337
+// vertices = new Vector<Vertex>();
3338
+//
3339
+// boolean epsequal = GrafreeD.epsequal;
3340
+// GrafreeD.epsequal = true;
3341
+//
3342
+// for (int i=0; i<group.selection.size(); i++)
3343
+// {
3344
+// Object3D buffer = new cGroup(group.selection.get(i).name + "+");
3345
+//
3346
+// group.selection.get(i).Parse(
3347
+//this );
3348
+//
3349
+// int repsize = temprep.VertexCount();
3350
+// int tablesize = temprep.vertextable.size();
3351
+// int nodesize = nodes.size();
3352
+//
3353
+// assert(vertices.size() == nodes.size());
3354
+//
3355
+// temprep.vertextable.elements();
3356
+//
3357
+// java.util.Set<java.util.Map.Entry<Vertex,Vertex>> set = temprep.vertextable.entrySet();
3358
+//
3359
+// for (java.util.Map.Entry<Vertex,Vertex> entry : set)
3360
+// {
3361
+// cGroup g = new cGroup();
3362
+//
3363
+// int index = vertices.indexOf(entry.getValue()); // temprep.vertextable.(k));
3364
+//
3365
+// Object3D node = nodes.get(index);
3366
+// temp.set(vertices.get(index)); // temprep.GetVertex(k));
3367
+// // System.out.println("temp = " + temp.x + ", " + temp.y + ", " + temp.z);
3368
+//
3369
+// LA.xformPos(temp, node.GlobalTransformInv(), temp);
3370
+//
3371
+// // System.out.println("tem+ = " + temp.x + ", " + temp.y + ", " + temp.z);
3372
+//
3373
+// if (g.toParent == null)
3374
+// {
3375
+// g.toParent = LA.newMatrix();
3376
+// g.fromParent = LA.newMatrix();
3377
+// }
3378
+// LA.matTranslate(g.toParent, temp.x, temp.y, temp.z);
3379
+// LA.matTranslate(g.fromParent, -temp.x, -temp.y, -temp.z);
3380
+//
3381
+// g.add(GrafreeD.clipboard);
3382
+//
3383
+// buffer.add(g);
3384
+// }
3385
+//
3386
+// makeSomething(buffer, i==group.selection.size()-1);
3387
+// }
3388
+//
3389
+// GrafreeD.epsequal = epsequal;
3390
+//
3391
+// //buffer = null;
3392
+// temprep = null;
3393
+// nodes = null;
3394
+//
3395
+// refreshContents();
3396
+// }
3397
+
31843398 void ParseVertices()
31853399 {
3186
- //if (group.selection.size() != 1)
3187
- // return;
3188
-
3189
- temprep = new BoundaryRep();
3190
- nodes = new Object3D();
3191
- vertices = new Vector<Vertex>();
3192
-
3193
- boolean epsequal = GraphreeD.epsequal;
3194
- GraphreeD.epsequal = true;
3400
+ boolean epsequal = GrafreeD.epsequal;
3401
+ GrafreeD.epsequal = true;
31953402
31963403 for (int i=0; i<group.selection.size(); i++)
31973404 {
3198
- Object3D buffer = new cGroup(group.selection.get(i).name + "+");
3405
+ final cGroup buffer = new cGroup(group.selection.get(i).name + "+");
31993406
3200
- group.selection.get(i).Parse(this);
3201
-
3202
- int repsize = temprep.VertexCount();
3203
- int tablesize = temprep.vertextable.size();
3204
- int nodesize = nodes.size();
3407
+ group.selection.get(i).Parse(
3408
+
3409
+ new iParse()
3410
+ {
3411
+ public void Vertex(Object3D node, Vertex v)
3412
+ {
3413
+ temp.set(v);
3414
+ LA.xformPos(temp, node.GlobalTransformInv(), temp);
32053415
3206
- assert(vertices.size() == nodes.size());
3207
-
3208
- temprep.vertextable.elements();
3209
-
3210
- java.util.Set<java.util.Map.Entry<Vertex,Vertex>> set = temprep.vertextable.entrySet();
3416
+ cGroup g = new cGroup();
32113417
3212
- for (java.util.Map.Entry<Vertex,Vertex> entry : set)
3213
- {
3214
- cGroup g = new cGroup();
3418
+ if (g.toParent == null)
3419
+ {
3420
+ g.toParent = LA.newMatrix();
3421
+ g.fromParent = LA.newMatrix();
3422
+ }
3423
+ LA.matTranslate(g.toParent, temp.x, temp.y, temp.z);
3424
+ LA.matTranslate(g.fromParent, -temp.x, -temp.y, -temp.z);
32153425
3216
- int index = vertices.indexOf(entry.getValue()); // temprep.vertextable.(k));
3217
- Object3D node = nodes.get(index);
3218
- temp.set(vertices.get(index)); // temprep.GetVertex(k));
3219
- // System.out.println("temp = " + temp.x + ", " + temp.y + ", " + temp.z);
3426
+ g.add(GrafreeD.clipboard);
32203427
3221
- LA.xformPos(temp, node.GlobalTransformInv(), temp);
3222
-
3223
- // System.out.println("tem+ = " + temp.x + ", " + temp.y + ", " + temp.z);
3224
-
3225
- if (g.toParent == null)
3226
- {
3227
- g.toParent = LA.newMatrix();
3228
- g.fromParent = LA.newMatrix();
3229
- }
3230
- LA.matTranslate(g.toParent, temp.x, temp.y, temp.z);
3231
- LA.matTranslate(g.fromParent, -temp.x, -temp.y, -temp.z);
3428
+ buffer.add(g);
3429
+ }
32323430
3233
- g.add(GraphreeD.clipboard);
3431
+ public void Face(Object3D node, Face f)
3432
+ {
32343433
3235
- buffer.add(g);
3236
- }
3434
+ }
3435
+ }
3436
+ );
32373437
32383438 makeSomething(buffer, i==group.selection.size()-1);
32393439 }
32403440
3241
- GraphreeD.epsequal = epsequal;
3242
-
3243
- //buffer = null;
3244
- temprep = null;
3245
- nodes = null;
3441
+ GrafreeD.epsequal = epsequal;
32463442
32473443 refreshContents();
32483444 }
3249
-
3445
+
3446
+ void TextureVertices()
3447
+ {
3448
+ for (int i=0; i<group.selection.size(); i++)
3449
+ {
3450
+ group.selection.get(i).Parse(
3451
+ new iParse()
3452
+ {
3453
+ public void Vertex(Object3D node, Vertex v)
3454
+ {
3455
+ cTexture tex = node.GetTextures();
3456
+ String pigment = Object3D.GetPigment(tex);
3457
+ //String bump = Object3D.GetBump(tex);
3458
+
3459
+ com.sun.opengl.util.texture.TextureData texturedata = CameraPane.theRenderer.GetTextureData(pigment, false, node.texres);
3460
+
3461
+ double s = v.s;
3462
+
3463
+ if (s == 1)
3464
+ s = 0;
3465
+
3466
+ double t = v.t;
3467
+
3468
+ if (t == 1)
3469
+ t = 0;
3470
+
3471
+ int indexs = (int) (texturedata.getWidth() * s);
3472
+ int indext = (int) (texturedata.getHeight() * t);
3473
+
3474
+ int index = indext * texturedata.getWidth() + indexs;
3475
+
3476
+ java.nio.ByteBuffer bytebuf = (java.nio.ByteBuffer)texturedata.getBuffer();
3477
+
3478
+ int slide = bytebuf.capacity() / texturedata.getWidth() / texturedata.getHeight();
3479
+
3480
+ float scale = bytebuf.get(index*slide) & 0xFF;
3481
+ scale += bytebuf.get(index*slide+1) & 0xFF;
3482
+ scale += bytebuf.get(index*slide+2) & 0xFF;
3483
+ scale /= 3;
3484
+
3485
+ scale /= 0xFF;
3486
+ // c'est quoi ca? scale /= 4;
3487
+
3488
+ //v.AO = scale;
3489
+
3490
+ v.x += v.norm.x * scale;
3491
+ v.y += v.norm.y * scale;
3492
+ v.z += v.norm.z * scale;
3493
+ }
3494
+
3495
+ public void Face(Object3D node, Face f)
3496
+ {
3497
+ }
3498
+ }
3499
+ );
3500
+ }
3501
+
3502
+ refreshContents();
3503
+ }
3504
+
32503505 void Align()
32513506 {
3507
+ if (group.selection.size() == 0)
3508
+ return;
3509
+
3510
+ cVector bbmin = new cVector();
3511
+ cVector bbmax = new cVector();
3512
+
3513
+ group.selection.get(0).getBounds(bbmin, bbmax, true);
3514
+
3515
+ double dx = bbmax.x - bbmin.x;
3516
+ double dy = bbmax.y - bbmin.y;
3517
+ double dz = bbmax.z - bbmin.z;
3518
+
3519
+ double scale = Math.sqrt(dx*dx + dy*dy + dz*dz);
3520
+
32523521 for (int i=0; i<group.selection.size(); i++)
32533522 {
32543523 Object3D obj = group.selection.get(i);
32553524
3256
- LA.matTranslate(obj.toParent, i/2f, 0, 0);
3257
- LA.matTranslateInv(obj.fromParent, -i/2f, 0, 0);
3525
+ LA.matTranslate(obj.toParent, i * scale, 0, 0);
3526
+ LA.matTranslateInv(obj.fromParent, -i * scale, 0, 0);
32583527 }
32593528
32603529 refreshContents();
....@@ -3267,7 +3536,7 @@
32673536 // ref.SaveSupports();
32683537 // Object3D par = ref.parent;
32693538 // ref.parent = null;
3270
-// Object3D lowres = (Object3D) GraphreeD.clone(ref);
3539
+// Object3D lowres = (Object3D) GrafreeD.clone(ref);
32713540 // ref.parent = par;
32723541 // ref.RestoreSupports();
32733542
....@@ -3297,7 +3566,7 @@
32973566 // lowres.SaveSupports();
32983567 // par = lowres.parent;
32993568 // lowres.parent = null;
3300
-// Object3D newlow = (Object3D) GraphreeD.clone(lowres);
3569
+// Object3D newlow = (Object3D) GrafreeD.clone(lowres);
33013570 Object3D newlow = CloneObject(lowres, false);
33023571 newlow.name = sn.switchobject.get(i).name;
33033572 System.out.println(" pose#" + i + " = " + newlow);
....@@ -3319,7 +3588,7 @@
33193588 return;
33203589
33213590 Object3D poses = group.selection.get(0);
3322
- Object3D ref = GraphreeD.clipboard.get(0);
3591
+ Object3D ref = GrafreeD.clipboard.get(0);
33233592
33243593 Object3D newgroup = new Object3D("Po:" + poses.name);
33253594
....@@ -3513,20 +3782,20 @@
35133782
35143783 void ClipMesh()
35153784 {
3516
- if (/*group.selection.size() == 1 &&*/ GraphreeD.clipboard.size() == 1)
3785
+ if (/*group.selection.size() == 1 &&*/ GrafreeD.clipboard.size() == 1)
35173786 {
3518
- Object3D content = GraphreeD.clipboard.get(0);
3787
+ Object3D content = GrafreeD.clipboard.get(0);
35193788
35203789 if (content instanceof cGroup && ((cGroup)content).transientlink )
35213790 content = ((cGroup)content).get(0);
35223791
35233792 // for (int i=0; i<group.selection.size(); i++)
35243793 // {
3525
-// group.selection.get(i).ClipMesh(GraphreeD.clipboard);
3794
+// group.selection.get(i).ClipMesh(GrafreeD.clipboard);
35263795 // }
3527
- group.selection.ClipMesh(GraphreeD.clipboard);
3796
+ group.selection.ClipMesh(GrafreeD.clipboard);
35283797 }
3529
-// group.selection.ClipMesh(GraphreeD.clipboard);
3798
+// group.selection.ClipMesh(GrafreeD.clipboard);
35303799 System.out.println("DONE.");
35313800 refreshContents();
35323801 }
....@@ -3864,12 +4133,12 @@
38644133 {
38654134 if (group.selection.isEmpty())
38664135 return;
3867
- GraphreeD.clipboardIsTempGroup = false;
4136
+ GrafreeD.clipboardIsTempGroup = false;
38684137 Composite tGroup = null;
38694138 if (group.selection.size() > 0) // 1)
38704139 {
38714140 tGroup = new cGroup();
3872
- GraphreeD.clipboardIsTempGroup = true;
4141
+ GrafreeD.clipboardIsTempGroup = true;
38734142 }
38744143
38754144 if (cut)
....@@ -3909,16 +4178,16 @@
39094178 //System.out.println("cut " + child);
39104179 //System.out.println("parent = " + child.parent);
39114180 // tmp.addChild(child);
3912
- if (GraphreeD.clipboardIsTempGroup)
4181
+ if (GrafreeD.clipboardIsTempGroup)
39134182 tGroup.add/*Child*/(tmp);
39144183 else
3915
- GraphreeD.clipboard = tmp;
4184
+ GrafreeD.clipboard = tmp;
39164185 }
39174186 else
3918
- if (GraphreeD.clipboardIsTempGroup)
4187
+ if (GrafreeD.clipboardIsTempGroup)
39194188 tGroup.add/*Child*/(child);
39204189 else
3921
- GraphreeD.clipboard = child;
4190
+ GrafreeD.clipboard = child;
39224191 }
39234192
39244193 //ResetModel();
....@@ -3950,21 +4219,21 @@
39504219 //System.out.println("cut " + elem);
39514220 //System.out.println("parent = " + elem.parent);
39524221 // tmp.addChild(elem);
3953
- if (GraphreeD.clipboardIsTempGroup)
4222
+ if (GrafreeD.clipboardIsTempGroup)
39544223 tGroup.add/*Child*/(tmp);
39554224 else
3956
- GraphreeD.clipboard = tmp;
4225
+ GrafreeD.clipboard = tmp;
39574226 }
39584227 else
3959
- if (GraphreeD.clipboardIsTempGroup)
4228
+ if (GrafreeD.clipboardIsTempGroup)
39604229 tGroup.add/*Child*/(child);
39614230 else
3962
- GraphreeD.clipboard = child;
4231
+ GrafreeD.clipboard = child;
39634232 }
39644233
39654234 }
3966
- if (GraphreeD.clipboardIsTempGroup)
3967
- GraphreeD.clipboard = tGroup;
4235
+ if (GrafreeD.clipboardIsTempGroup)
4236
+ GrafreeD.clipboard = tGroup;
39684237 if (cut)
39694238 {
39704239 ResetModel();
....@@ -3974,11 +4243,11 @@
39744243
39754244 void paste(boolean expand)
39764245 {
3977
- // if (GraphreeD.clipboard == null)
4246
+ // if (GrafreeD.clipboard == null)
39784247 // return;
39794248 boolean first = true;
39804249
3981
- if (GraphreeD.clipboardIsTempGroup)
4250
+ if (GrafreeD.clipboardIsTempGroup)
39824251 {
39834252 Composite temp;
39844253
....@@ -3989,7 +4258,7 @@
39894258 temp = (Composite)Applet3D.clipboard.deepCopy();
39904259 */
39914260 Object3D elem;
3992
- for (Enumeration e = /*temp.children*/GraphreeD.clipboard.elements(); e.hasMoreElements();) // objList.add(copy.name))
4261
+ for (Enumeration e = /*temp.children*/GrafreeD.clipboard.elements(); e.hasMoreElements();) // objList.add(copy.name))
39934262 {
39944263 Object3D child = (Object3D)e.nextElement();
39954264
....@@ -4003,7 +4272,7 @@
40034272 else
40044273 elem = child.deepCopy(); // ?
40054274 child.parent = keepparent;
4006
- //if (GraphreeD.clipboardIsTempGroup && LA.isIdentity(elem.fromParent))
4275
+ //if (GrafreeD.clipboardIsTempGroup && LA.isIdentity(elem.fromParent))
40074276 // elem = elem.get(0);
40084277 makeSomething(elem, true); // ?? first);
40094278 //group.addChild(elem);
....@@ -4023,14 +4292,14 @@
40234292 //Object3D cb = Applet3D.clipboard;
40244293 //temp.addChild(cb);
40254294 //makeSomething((expand?temp.copyExpand():temp.deepCopy()).get(0));
4026
- assert(GraphreeD.clipboard.parent == null);
4027
- Object3D /*Composite*/ keepparent = GraphreeD.clipboard.get(0).parent;
4028
- GraphreeD.clipboard.get(0).parent = null; // Avoid copy?
4029
- if (LA.isIdentity(GraphreeD.clipboard.toParent))
4030
- makeSomething(expand?GraphreeD.clipboard.get(0).copyExpand():GraphreeD.clipboard.get(0).deepCopy());
4295
+ assert(GrafreeD.clipboard.parent == null);
4296
+ Object3D /*Composite*/ keepparent = GrafreeD.clipboard.get(0).parent;
4297
+ GrafreeD.clipboard.get(0).parent = null; // Avoid copy?
4298
+ if (LA.isIdentity(GrafreeD.clipboard.toParent))
4299
+ makeSomething(expand?GrafreeD.clipboard.get(0).copyExpand():GrafreeD.clipboard.get(0).deepCopy());
40314300 else
4032
- makeSomething(expand?GraphreeD.clipboard.copyExpand():GraphreeD.clipboard.deepCopy());
4033
- GraphreeD.clipboard.get(0).parent = keepparent;
4301
+ makeSomething(expand?GrafreeD.clipboard.copyExpand():GrafreeD.clipboard.deepCopy());
4302
+ GrafreeD.clipboard.get(0).parent = keepparent;
40344303 }
40354304
40364305 ResetModel();
....@@ -4039,7 +4308,7 @@
40394308
40404309 void pasteInto(boolean copyit)
40414310 {
4042
-// if (GraphreeD.clipboard == null)
4311
+// if (GrafreeD.clipboard == null)
40434312 // return;
40444313
40454314 if (group.selection.size() != 1)
....@@ -4072,9 +4341,9 @@
40724341 {
40734342 boolean first = true;
40744343
4075
- if (GraphreeD.clipboardIsTempGroup)
4344
+ if (GrafreeD.clipboardIsTempGroup)
40764345 {
4077
- Composite temp = (Composite)GraphreeD.clipboard;
4346
+ Composite temp = (Composite)GrafreeD.clipboard;
40784347 Object3D copy;
40794348 for (Enumeration e = temp.children.elements(); e.hasMoreElements();)
40804349 {
....@@ -4084,7 +4353,7 @@
40844353 }
40854354 } else
40864355 {
4087
- linkSomething(GraphreeD.clipboard); //.get(0));
4356
+ linkSomething(GrafreeD.clipboard); //.get(0));
40884357 }
40894358 }
40904359 }
....@@ -4276,6 +4545,26 @@
42764545 makeSomething(csg);
42774546 }
42784547
4548
+ void Ungroup(Object3D g)
4549
+ {
4550
+ if (g instanceof HiddenObject)
4551
+ {
4552
+ HiddenObject h = (HiddenObject) g;
4553
+
4554
+ for (int i=0; i<h.ActualSize(); i++)
4555
+ {
4556
+ objEditor.makeSomething(h.get(i), false);
4557
+ }
4558
+ }
4559
+ else
4560
+ {
4561
+ for (int i=0; i<g.Size(); i++)
4562
+ {
4563
+ objEditor.makeSomething(g.get(i), false);
4564
+ }
4565
+ }
4566
+ }
4567
+
42794568 void ungroup()
42804569 {
42814570 /*
....@@ -4471,7 +4760,7 @@
44714760
44724761 void ImportGFD()
44734762 {
4474
- FileDialog browser = new FileDialog(objEditor.frame, "Import GraphreeD", FileDialog.LOAD);
4763
+ FileDialog browser = new FileDialog(objEditor.frame, "Import GrafreeD", FileDialog.LOAD);
44754764 browser.show();
44764765 String filename = browser.getFile();
44774766 if (filename != null && filename.length() > 0)
....@@ -4509,7 +4798,7 @@
45094798
45104799 void ImportVRMLX3D()
45114800 {
4512
- if (GraphreeD.standAlone)
4801
+ if (GrafreeD.standAlone)
45134802 {
45144803 /**/
45154804 FileDialog browser = new FileDialog(objEditor.frame, "Import VRML/X3D", FileDialog.LOAD);
....@@ -4526,7 +4815,7 @@
45264815
45274816 String GetFile(String dialogName)
45284817 {
4529
- if (GraphreeD.standAlone)
4818
+ if (GrafreeD.standAlone)
45304819 {
45314820 FileDialog browser = new FileDialog(objEditor.frame, dialogName, FileDialog.LOAD);
45324821 browser.show();
....@@ -4635,6 +4924,7 @@
46354924 private MenuItem resetsupportItem;
46364925 private MenuItem resetreferencesItem;
46374926 private MenuItem linkverticesItem;
4927
+ private MenuItem relinkverticesItem;
46384928 private MenuItem setMasterItem;
46394929 private MenuItem resetMeshItem;
46404930 private MenuItem stepAllItem;
....@@ -4653,8 +4943,10 @@
46534943 private MenuItem clearItem;
46544944 private MenuItem clearAllItem;
46554945 private MenuItem genUVItem;
4946
+ private MenuItem genNormalsMESHItem;
46564947 private MenuItem genNormalsCADItem;
46574948 private MenuItem genNormalsORGANItem;
4949
+ private MenuItem genNormalsMINEItem;
46584950 private MenuItem stripifyItem;
46594951 private MenuItem unstripifyItem;
46604952 private MenuItem trimItem;
....@@ -4696,6 +4988,7 @@
46964988 private MenuItem resetCentroidItem;
46974989 private MenuItem transformgeometryItem;
46984990 private MenuItem resetTransformItem;
4991
+ private MenuItem hideItem;
46994992 private MenuItem grabItem;
47004993 private MenuItem backItem;
47014994 private MenuItem frontItem;
....@@ -4728,12 +5021,15 @@
47285021 private MenuItem particleItem;
47295022 private MenuItem ragdollItem;
47305023 private MenuItem ragdoll2Item;
5024
+ private MenuItem heightFieldItem;
5025
+ private MenuItem textureFieldItem;
47315026 private MenuItem gridItem;
47325027 private MenuItem rectoidItem;
47335028 private MenuItem ellipsoidItem;
47345029 private MenuItem coneItem;
47355030 private MenuItem torusItem;
47365031 private MenuItem superItem;
5032
+ private MenuItem kleinItem;
47375033 private MenuItem blobItem;
47385034 private MenuItem latheItem;
47395035 private MenuItem bezierItem;
....@@ -4746,6 +5042,7 @@
47465042 private MenuItem csgItem;
47475043 private MenuItem templateItem;
47485044 private MenuItem textureItem;
5045
+ private MenuItem billboardItem;
47495046 private MenuItem shadowXItem;
47505047 private MenuItem shadowYItem;
47515048 private MenuItem shadowZItem;