From 02e145cb923d601395acc7f15ae9e13f85ef2fbb Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Mon, 02 Jul 2018 21:38:58 -0400 Subject: [PATCH] Hip orientation. --- GroupEditor.java | 129 ++++++++++++++++++++++++++++++++++++++---- 1 files changed, 115 insertions(+), 14 deletions(-) diff --git a/GroupEditor.java b/GroupEditor.java index e40eb06..d7a1c3e 100644 --- a/GroupEditor.java +++ b/GroupEditor.java @@ -219,6 +219,8 @@ resetsupportItem.addActionListener(this); linkverticesItem = menu.add(new MenuItem("Link to Support")); linkverticesItem.addActionListener(this); + relinkverticesItem = menu.add(new MenuItem("Re-link to Support")); + relinkverticesItem.addActionListener(this); setMasterItem = menu.add(new MenuItem("Set Master Mesh")); setMasterItem.addActionListener(this); @@ -231,6 +233,10 @@ frontItem.addActionListener(this); compositeItem = menu.add(new MenuItem("Composite")); compositeItem.addActionListener(this); + hideItem = menu.add(new MenuItem("Hide")); + hideItem.addActionListener(this); + ungroupItem = menu.add(new MenuItem("Ungroup")); + ungroupItem.addActionListener(this); menu.add("-"); randomItem = menu.add(new MenuItem("Random")); randomItem.addActionListener(this); @@ -252,6 +258,8 @@ oe.menuBar.add(menu = new Menu("Object")); textureItem = menu.add(new MenuItem("Texture")); textureItem.addActionListener(this); + billboardItem = menu.add(new MenuItem("Billboard")); + billboardItem.addActionListener(this); csgItem = menu.add(new MenuItem("CSG")); csgItem.addActionListener(this); shadowXItem = menu.add(new MenuItem("Shadow X")); @@ -269,14 +277,12 @@ pointflowItem = menu.add(new MenuItem("Point Flow")); pointflowItem.addActionListener(this); menu.add("-"); - transformgeometryItem = menu.add(new MenuItem("Transform Geometry")); - transformgeometryItem.addActionListener(this); resetTransformItem = menu.add(new MenuItem("Reset Transform")); resetTransformItem.addActionListener(this); resetCentroidItem = menu.add(new MenuItem("Reset Centroid")); resetCentroidItem.addActionListener(this); - ungroupItem = menu.add(new MenuItem("Ungroup")); - ungroupItem.addActionListener(this); + transformgeometryItem = menu.add(new MenuItem("Transform Geometry")); + transformgeometryItem.addActionListener(this); oe.menuBar.add(menu = new Menu("Geometry")); genUVItem = menu.add(new MenuItem("Generate UV")); @@ -285,6 +291,10 @@ genNormalsORGANItem.addActionListener(this); genNormalsCADItem = menu.add(new MenuItem("CAD Normals")); genNormalsCADItem.addActionListener(this); + genNormalsMESHItem = menu.add(new MenuItem("Mesh Normals")); + genNormalsMESHItem.addActionListener(this); + genNormalsMINEItem = menu.add(new MenuItem("My Normals")); + genNormalsMINEItem.addActionListener(this); stripifyItem = menu.add(new MenuItem("Stripify")); stripifyItem.addActionListener(this); unstripifyItem = menu.add(new MenuItem("Unstripify")); @@ -1033,6 +1043,8 @@ torusItem.addActionListener(this); superItem = menu.add(new MenuItem("Superellipsoid")); superItem.addActionListener(this); + kleinItem = menu.add(new MenuItem("Klein Bottle")); + kleinItem.addActionListener(this); particleItem = menu.add(new MenuItem("Particle system")); particleItem.addActionListener(this); ragdollItem = menu.add(new MenuItem("Rag Walk")); @@ -1593,6 +1605,10 @@ { makeSomething(new Superellipsoid()); } else + if (event.getSource() == kleinItem) + { + makeSomething(new Klein()); + } else if (event.getSource() == blobItem) { Blob blob = new Blob(); @@ -2001,23 +2017,28 @@ if (group.selection.size() == 1) one = true; + Object3D merge = null; + Object3D content = new cGroup(); for (int i=0; i<group.selection.size(); i++) { - Object3D sel = new Merge(group.selection.get(i)); + merge = new Merge(group.selection.get(i)); if (one) - makeSomething(sel, false); + makeSomething(merge, false); else - content.addChild(sel); + content.addChild(merge); } if (!one) - makeSomething(content, false); - - ResetModel(); - refreshContents(); + makeSomething(content, true); + else + { + ResetModel(); + Select(merge.GetTreePath(), true, false); // unselect... false); + refreshContents(); + } } else if (event.getSource() == mergeGeometriesItem) { @@ -2094,6 +2115,15 @@ refreshContents(); } else + if (event.getSource() == relinkverticesItem) + { + boolean random = CameraPane.RANDOM; + CameraPane.RANDOM = false; // parse all random nodes + group.selection.RelinkToSupport(); + CameraPane.RANDOM = random; + + refreshContents(); + } else if (event.getSource() == resetreferencesItem) { for (int i=0; i<group.selection.size(); i++) @@ -2162,6 +2192,10 @@ if (event.getSource() == grabItem) { group(new cGroup(), true); + } else + if (event.getSource() == hideItem) + { + group(new HiddenObject()); } else if (event.getSource() == frontItem) { @@ -2285,6 +2319,10 @@ { group(new TextureNode()); } else + if (event.getSource() == billboardItem) + { + group(new BillboardNode()); + } else if (event.getSource() == shadowXItem) { CastShadow(0); @@ -2299,7 +2337,15 @@ } else if (event.getSource() == ungroupItem) { - ungroup(); + //ungroup(); + for (int i=0; i<group.selection.size(); i++) + { + Ungroup(group.selection.get(i)); + } + + ClearSelection(false); + + refreshContents(); } else if (event.getSource() == genUVItem) { @@ -2309,9 +2355,17 @@ { GenNormals(true); } else + if (event.getSource() == genNormalsMESHItem) + { + GenNormals(true); // TODO + } else if (event.getSource() == genNormalsORGANItem) { GenNormals(false); + } else + if (event.getSource() == genNormalsMINEItem) + { + GenNormalsMINE(); } else if (event.getSource() == stripifyItem) { @@ -3173,6 +3227,13 @@ refreshContents(); } + void GenNormalsMINE() + { + group.selection.GenNormalsMINE(); + + refreshContents(); + } + void Stripify() { group.StripifyS(); @@ -3441,12 +3502,26 @@ void Align() { + if (group.selection.size() == 0) + return; + + cVector bbmin = new cVector(); + cVector bbmax = new cVector(); + + group.selection.get(0).getBounds(bbmin, bbmax, true); + + double dx = bbmax.x - bbmin.x; + double dy = bbmax.y - bbmin.y; + double dz = bbmax.z - bbmin.z; + + double scale = Math.sqrt(dx*dx + dy*dy + dz*dz); + for (int i=0; i<group.selection.size(); i++) { Object3D obj = group.selection.get(i); - LA.matTranslate(obj.toParent, i/2f, 0, 0); - LA.matTranslateInv(obj.fromParent, -i/2f, 0, 0); + LA.matTranslate(obj.toParent, i * scale, 0, 0); + LA.matTranslateInv(obj.fromParent, -i * scale, 0, 0); } refreshContents(); @@ -4468,6 +4543,26 @@ makeSomething(csg); } + void Ungroup(Object3D g) + { + if (g instanceof HiddenObject) + { + HiddenObject h = (HiddenObject) g; + + for (int i=0; i<h.ActualSize(); i++) + { + objEditor.makeSomething(h.get(i), false); + } + } + else + { + for (int i=0; i<g.Size(); i++) + { + objEditor.makeSomething(g.get(i), false); + } + } + } + void ungroup() { /* @@ -4827,6 +4922,7 @@ private MenuItem resetsupportItem; private MenuItem resetreferencesItem; private MenuItem linkverticesItem; + private MenuItem relinkverticesItem; private MenuItem setMasterItem; private MenuItem resetMeshItem; private MenuItem stepAllItem; @@ -4845,8 +4941,10 @@ private MenuItem clearItem; private MenuItem clearAllItem; private MenuItem genUVItem; + private MenuItem genNormalsMESHItem; private MenuItem genNormalsCADItem; private MenuItem genNormalsORGANItem; + private MenuItem genNormalsMINEItem; private MenuItem stripifyItem; private MenuItem unstripifyItem; private MenuItem trimItem; @@ -4888,6 +4986,7 @@ private MenuItem resetCentroidItem; private MenuItem transformgeometryItem; private MenuItem resetTransformItem; + private MenuItem hideItem; private MenuItem grabItem; private MenuItem backItem; private MenuItem frontItem; @@ -4928,6 +5027,7 @@ private MenuItem coneItem; private MenuItem torusItem; private MenuItem superItem; + private MenuItem kleinItem; private MenuItem blobItem; private MenuItem latheItem; private MenuItem bezierItem; @@ -4940,6 +5040,7 @@ private MenuItem csgItem; private MenuItem templateItem; private MenuItem textureItem; + private MenuItem billboardItem; private MenuItem shadowXItem; private MenuItem shadowYItem; private MenuItem shadowZItem; -- Gitblit v1.6.2