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. --- ObjEditor.java | 116 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 92 insertions(+), 24 deletions(-) diff --git a/ObjEditor.java b/ObjEditor.java index 228f57c..a7f467c 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"); } @@ -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); @@ -3596,7 +3664,7 @@ if (obj.parent != null) { - obj.parent.TransformToWorld(interest); +// obj.parent.TransformToWorld(interest); } if (!CameraPane.TRACK) -- Gitblit v1.6.2