From 89c1ad67bc65d24ceadfa9e95f8c5515283f1e97 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Sun, 01 Jul 2018 15:45:28 -0400 Subject: [PATCH] Reverse matrix order. --- ObjEditor.java | 150 ++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 114 insertions(+), 36 deletions(-) diff --git a/ObjEditor.java b/ObjEditor.java index 689f974..c4118f0 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -522,18 +522,18 @@ maxima.y = sel.toParent[3][1]; maxima.z = sel.toParent[3][2]; si.SendInfo(" Orig: " + maxima, "regular"); - maxima.x = sel.globalTransform[3][0]; - maxima.y = sel.globalTransform[3][1]; - maxima.z = sel.globalTransform[3][2]; - if (full) - si.SendInfo(" Global Orig: " + maxima, "regular"); maxima.x = sel.toParent[0][0]; maxima.y = sel.toParent[1][1]; maxima.z = sel.toParent[2][2]; si.SendInfo(" Scale: " + maxima, "regular"); - maxima.x = sel.globalTransform[0][0]; - maxima.y = sel.globalTransform[1][1]; - maxima.z = sel.globalTransform[2][2]; + maxima.x = sel.globalTransform[3][0]; + maxima.y = sel.globalTransform[3][1]; + maxima.z = sel.globalTransform[3][2]; + if (full) + si.SendInfo(" Global Orig: " + maxima, "regular"); + maxima.x = sel.globalTransform[0][0]; + maxima.y = sel.globalTransform[1][1]; + maxima.z = sel.globalTransform[2][2]; if (full) si.SendInfo(" Global Scale: " + maxima, "regular"); } @@ -692,7 +692,7 @@ protected static ImageIcon createImageIcon(String path, String description) { - java.net.URL imgURL = GraphreeD.class.getResource(path); + java.net.URL imgURL = GrafreeD.class.getResource(path); if (imgURL != null) { return new ImageIcon(imgURL, description); @@ -1107,7 +1107,7 @@ //frontScroll.setLabel("------------------------------ XZ (front) ---------------------------------------------------"); //sideScroll.setLabel("------------------------------- YZ (side) ---------------------------------------------------"); -// GridBagConstraints gbc = (GridBagConstraints) GraphreeD.clone(aConstraints); +// GridBagConstraints gbc = (GridBagConstraints) GrafreeD.clone(aConstraints); Camera cam = GetCamera(copy, 0); Composite cams = null; @@ -1334,9 +1334,9 @@ frame.getContentPane().add(/*"Center",*/framePanel); //frame.getContentPane().add(/*"Center",*/ worldPane); -// aConstraints = gbc; // (GridBagConstraints) GraphreeD.clone(gbc); +// aConstraints = gbc; // (GridBagConstraints) GrafreeD.clone(gbc); - frame.setSize(800, 600); + frame.setSize(1024, 768); frame.show(); gridPanel.setDividerLocation(1.0); @@ -1859,19 +1859,21 @@ } // Images/textures - if (textures - && (filename.toLowerCase().endsWith(".jpg") - || filename.toLowerCase().endsWith(".jpeg") - || filename.toLowerCase().endsWith(".gif") - || filename.toLowerCase().endsWith(".png") - || filename.toLowerCase().endsWith(".tre") - || filename.toLowerCase().endsWith(".bmp") - || filename.toLowerCase().endsWith(".tga") - || filename.toLowerCase().endsWith(".sgi") - || filename.toLowerCase().endsWith(".tif") - || filename.toLowerCase().endsWith(".tiff"))) + if (filename.toLowerCase().endsWith(".jpg") + || filename.toLowerCase().endsWith(".jpeg") + || filename.toLowerCase().endsWith(".gif") + || filename.toLowerCase().endsWith(".png") + || filename.toLowerCase().endsWith(".tre") + || filename.toLowerCase().endsWith(".bmp") + || filename.toLowerCase().endsWith(".tga") + || filename.toLowerCase().endsWith(".sgi") + || filename.toLowerCase().endsWith(".tif") + || filename.toLowerCase().endsWith(".tiff")) { - DropTexture(filename); + if (textures) + DropTexture(filename); + else + CreateBillboard(filename); continue; } @@ -1880,6 +1882,60 @@ } ResetModel(); + } + + void CreateBillboard(String filename) + { + Object3D source = null; + Object3D group = copy; + + if (group.selection.size() > 0) + { + source = group.selection.get(0); + } + + Grid grid = new Grid(1,1); + grid.material = null; + + grid.toParent = LA.newMatrix(); + grid.fromParent = LA.newMatrix(); + LA.matYRotate(grid.toParent, Math.PI/2); + LA.matXRotate(grid.toParent, -Math.PI/2); + LA.matXRotate(grid.fromParent, Math.PI/2); + LA.matYRotate(grid.fromParent, -Math.PI/2); + + BillboardNode bb = new BillboardNode(); + bb.addChild(grid); + + Object3D newgroup = new Object3D(); + newgroup.CreateMaterial(); + + File file = new File(filename); + newgroup.name = file.getName(); + newgroup.addChild(bb); + + Object3D main = newgroup; + + main.SetPigmentTexture(filename); + + if (source != null) + { + main.material = new cMaterial(source.material); + if (main.projectedVertices.length < source.projectedVertices.length) + { + main.projectedVertices = new Object3D.cVector2[source.projectedVertices.length]; + } + + for (int i=0; i<source.projectedVertices.length; i++) + { + main.projectedVertices[i].x = source.projectedVertices[i].x; + main.projectedVertices[i].y = source.projectedVertices[i].y; + } + + main.texres = source.texres; + } + + makeSomething(newgroup, false); } Point location; @@ -2138,6 +2194,8 @@ { Mocap sel = (Mocap) copy.selection.get(0); + sel.SetCurrentBones(sel.frame); + sel.fullname = fullname; if (changename) @@ -2151,14 +2209,18 @@ sel.smoothed = false; // if (!changename) - sel.SetPositionDelta(false, true, true, true/*?*/); // false + //sel.SetPositionDelta(false, true, true, true/*?*/); // false + sel.SetGlobalTransform(); + sel.LoadData(); + sel.Rewind(); + sel.Fade(); // sel.setPose(0); refreshContents(); } else { mocap.Reset(); // new skeleton - makeSomething(mocap, false); // true); + makeSomething(mocap, true); // true); } } catch (Exception e) { @@ -2185,6 +2247,8 @@ { Mocap sel = (Mocap) select; + sel.SetCurrentBones(sel.frame); + File file = new File(fullname); // Mocap mocap = new Mocap("Mocap" + file.getName()); @@ -2251,7 +2315,11 @@ if (!changename) { - sel.SetPositionDelta(false, true, true, true/*?*/); + //sel.SetPositionDelta(false, true, true, true/*?*/); + sel.SetGlobalTransform(); + sel.LoadData(); + sel.Rewind(); + sel.Fade(); } // sel.setPose(0); @@ -2345,7 +2413,7 @@ void ImportJME(com.jmex.model.converters.FormatConverter converter, String ext, String dialogName) { - if (GraphreeD.standAlone) + if (GrafreeD.standAlone) { /**/ FileDialog browser = new FileDialog(frame, dialogName, FileDialog.LOAD); @@ -3183,8 +3251,8 @@ CameraPane.ANIMATION ^= true; - GraphreeD.wav.cursor = 0; - GraphreeD.wav.loop = 0; + GrafreeD.wav.cursor = 0; + GrafreeD.wav.loop = 0; } } else { @@ -4085,7 +4153,7 @@ void load() // throws ClassNotFoundException { - if (GraphreeD.standAlone) + if (GrafreeD.standAlone) { FileDialog browser = new FileDialog(frame, "Load", FileDialog.LOAD); browser.show(); @@ -4190,7 +4258,7 @@ void saveAs() { - if (GraphreeD.standAlone) + if (GrafreeD.standAlone) { FileDialog browser = new FileDialog(frame, "Save As", FileDialog.SAVE); browser.setVisible(true); @@ -4213,10 +4281,20 @@ Object3D object = copy.selection.get(0); + FileObject fileobj = null; + + if (object instanceof FileObject) + fileobj = (FileObject)object; + if (object.fileparent != null) { - FileObject fileobj = (FileObject) object.fileparent; + assert(fileobj == null); + fileobj = (FileObject) object.fileparent; + } + + if (fileobj != null) + { System.out.println("WriteObject " + object + " : " + fileobj.name); WriteObject(object, fileobj.name); } @@ -4259,7 +4337,7 @@ } } else - //if (GraphreeD.standAlone) + //if (GrafreeD.standAlone) { FileDialog browser = new FileDialog(frame, "Export", FileDialog.SAVE); browser.setVisible(true); @@ -4291,7 +4369,7 @@ Object3D objectparent = obj.parent; obj.parent = null; - Object3D object = (Object3D) GraphreeD.clone(obj); + Object3D object = (Object3D) GrafreeD.clone(obj); obj.parent = objectparent; @@ -4325,7 +4403,7 @@ buffer.append("background { color rgb <0.8,0.8,0.8> }\n\n"); cameraView.renderCamera.generatePOV(buffer, bnds.width, bnds.height); copy.generatePOV(buffer); - if (GraphreeD.standAlone) + if (GrafreeD.standAlone) { FileDialog browser = new FileDialog(frame, "Export POV", 1); browser.show(); -- Gitblit v1.6.2