From 4629090fafbef256abd0686a85ee12042d658868 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Wed, 12 Jun 2019 22:37:48 -0400 Subject: [PATCH] Mocap big data --- ObjEditor.java | 10 + BoundaryRep.java | 47 ++++++- GroupEditor.java | 9 + Mocap.java | 18 +++ Object3D.java | 269 +++++++++++++++++++++++++++----------------- 5 files changed, 238 insertions(+), 115 deletions(-) diff --git a/BoundaryRep.java b/BoundaryRep.java index 3583aa0..6c09eda 100644 --- a/BoundaryRep.java +++ b/BoundaryRep.java @@ -3857,6 +3857,28 @@ Trim(true/*wastrim*/,true,crease,wasstrip,false); } + void GenerateNormalsMesh() + { + if (stripified) + { + Unstripify(); + } + + if (trimmed) + { + normals = null; + } + else + { + for (int i=VertexCount(); --i>=0;) + { + Vertex v = GetVertex(i); + + v.norm = null; + } + } + } + void GenNormalsJME() { assert(false); @@ -4013,8 +4035,9 @@ triangles[i] = i; } - Untrim(); - MergeNormals(); +// Untrim(); + if (!trimmed) + MergeNormals(); } } @@ -4076,8 +4099,9 @@ triangles[0] = 3; } - Untrim(); - MergeNormals(); + //Untrim(); + if (!trimmed) + MergeNormals(); } /* @@ -4942,9 +4966,18 @@ v./*pos.*/y = positions[i3 + 1]; v./*pos.*/z = positions[i3 + 2]; - v.norm.x = normals[i3]; - v.norm.y = normals[i3 + 1]; - v.norm.z = normals[i3 + 2]; + if (normals == null) + { + v.norm.x = 0; + v.norm.y = 0; + v.norm.z = 0; + } + else + { + v.norm.x = normals[i3]; + v.norm.y = normals[i3 + 1]; + v.norm.z = normals[i3 + 2]; + } v.s = uvmap[i2]; v.t = uvmap[i2 + 1]; diff --git a/GroupEditor.java b/GroupEditor.java index 43af894..d52863f 100644 --- a/GroupEditor.java +++ b/GroupEditor.java @@ -2542,7 +2542,7 @@ } else if (source == genNormalsMESHItem) { - GenNormals(true); // TODO + GenNormalsMESH(); } else if (source == genNormalsORGANItem) { @@ -3515,6 +3515,13 @@ refreshContents(); } + void GenNormalsMESH() + { + group.GenNormalsMeshS(); + + refreshContents(); + } + void GenNormalsMINE() { group.selection.GenNormalsMINE(); diff --git a/Mocap.java b/Mocap.java index 246c834..a98d80c 100644 --- a/Mocap.java +++ b/Mocap.java @@ -644,6 +644,24 @@ // transient // aout 2013 Object3D skeleton; + void ExtractBigData(Object3D o) + { + super.ExtractBigData(o); + + o.bvh = this.bvh; + o.skeleton = this.skeleton; + this.bvh = null; + this.skeleton = null; + } + + void RestoreBigData(Object3D o) + { + super.RestoreBigData(o); + + this.bvh = o.bvh; + this.skeleton = o.skeleton; + } + boolean smoothed; //boolean touched; diff --git a/ObjEditor.java b/ObjEditor.java index 13331f4..1319073 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -3306,12 +3306,17 @@ { cRadio tab = GetCurrentTab(); + boolean temp = CameraPane.SWITCH; + CameraPane.SWITCH = false; + copy.ExtractBigData(hashtable); //EditorFrame.m_MainFrame.requestFocusInWindow(); tab.graphs[tab.undoindex++] = Compress(copy); copy.RestoreBigData(hashtable); + + CameraPane.SWITCH = temp; //assert(hashtable.isEmpty()); @@ -3342,6 +3347,9 @@ void CopyChanged(Object3D obj) { + boolean temp = CameraPane.SWITCH; + CameraPane.SWITCH = false; + copy.ExtractBigData(hashtable); copy.clear(); @@ -3353,6 +3361,8 @@ copy.RestoreBigData(hashtable); + CameraPane.SWITCH = temp; + //assert(hashtable.isEmpty()); copy.Touch(); diff --git a/Object3D.java b/Object3D.java index 5c5d71f..d7a346f 100644 --- a/Object3D.java +++ b/Object3D.java @@ -24,6 +24,11 @@ private UUID uuid = UUID.randomUUID(); + // TEMPORARY for mocap undo + mocap.reader.BVHReader.BVHResult bvh; + Object3D skeleton; + // + ScriptNode scriptnode; void InitOthers() @@ -104,125 +109,136 @@ // transient boolean reduced; // for morph reduction -transient com.bulletphysics.linearmath.Transform cache; // for fast merge -transient com.bulletphysics.linearmath.Transform cache_1; // for fast merge + transient com.bulletphysics.linearmath.Transform cache; // for fast merge + transient com.bulletphysics.linearmath.Transform cache_1; // for fast merge -transient Object3D transientsupport; // for cloning -transient boolean transientlink2master; + transient Object3D transientsupport; // for cloning + transient boolean transientlink2master; -void SaveSupports() -{ - if (blockloop) - return; - - transientsupport = support; - transientlink2master = link2master; - - support = null; - link2master = false; - - if (bRep != null) + void SaveSupports() { - bRep.SaveSupports(); + if (blockloop) + return; + + transientsupport = support; + transientlink2master = link2master; + + support = null; + link2master = false; + + if (bRep != null) + { + bRep.SaveSupports(); + } + + for (int i = 0; i < Size(); i++) + { + Object3D child = (Object3D) get(i); + if (child == null) + continue; + blockloop = true; + child.SaveSupports(); + blockloop = false; + } } - - for (int i = 0; i < Size(); i++) - { - Object3D child = (Object3D) get(i); - if (child == null) - continue; - blockloop = true; - child.SaveSupports(); - blockloop = false; - } -} -void RestoreSupports() -{ - if (blockloop) - return; + void RestoreSupports() + { + if (blockloop) + return; - support = transientsupport; - link2master = transientlink2master; - transientsupport = null; - transientlink2master = false; - - if (bRep != null) - { - bRep.RestoreSupports(); - } - - for (int i = 0; i < Size(); i++) - { - Object3D child = (Object3D) get(i); - if (child == null) - continue; - blockloop = true; - child.RestoreSupports(); - blockloop = false; - } -} + support = transientsupport; + link2master = transientlink2master; + transientsupport = null; + transientlink2master = false; -void ExtractBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable) -{ - if (hashtable.containsKey(GetUUID())) + if (bRep != null) + { + bRep.RestoreSupports(); + } + + for (int i = 0; i < Size(); i++) + { + Object3D child = (Object3D) get(i); + if (child == null) + continue; + blockloop = true; + child.RestoreSupports(); + blockloop = false; + } + } + + void ExtractBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable) { + if (hashtable.containsKey(GetUUID())) + { + Object3D o = hashtable.get(GetUUID()); + + assert(this.bRep == o.bRep); + if (this.bRep != null) + assert(this.bRep.support == o.transientrep); + + return; + } + + Object3D o = new Object3D(); + + hashtable.put(GetUUID(), o); + + for (int i=0; i<Size(); i++) + { + get(i).ExtractBigData(hashtable); + } + + ExtractBigData(o); + } + + void ExtractBigData(Object3D o) + { + o.bRep = this.bRep; + if (this.bRep != null) + { + o.transientrep = this.bRep.support; + o.bRep.support = null; + } + + // o.support = this.support; + // o.fileparent = this.fileparent; + // if (this.bRep != null) + // o.bRep = this.bRep.support; + + this.bRep = null; + // if (this.bRep != null) + // this.bRep.support = null; + // this.support = null; + // this.fileparent = null; + } + + void RestoreBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable) + { + if (!hashtable.containsKey(GetUUID())) + return; + Object3D o = hashtable.get(GetUUID()); - assert(this.bRep == o.bRep); - if (this.bRep != null) - assert(this.bRep.support == o.transientrep); - - return; - } - - Object3D o = new Object3D(); - o.bRep = this.bRep; - if (this.bRep != null) - { - o.transientrep = this.bRep.support; - o.bRep.support = null; - } - -// o.support = this.support; -// o.fileparent = this.fileparent; -// if (this.bRep != null) -// o.bRep = this.bRep.support; - - hashtable.put(GetUUID(), o); - - this.bRep = null; -// if (this.bRep != null) -// this.bRep.support = null; -// this.support = null; -// this.fileparent = null; - - for (int i=0; i<Size(); i++) - { - get(i).ExtractBigData(hashtable); - } -} + RestoreBigData(o); -void RestoreBigData(java.util.Hashtable<java.util.UUID, Object3D> hashtable) -{ - if (!hashtable.containsKey(GetUUID())) - return; - - Object3D o = hashtable.get(GetUUID()); - - this.bRep = o.bRep; - if (this.bRep != null) - this.bRep.support = o.transientrep; -// this.support = o.support; -// this.fileparent = o.fileparent; - - hashtable.remove(GetUUID()); - - for (int i=0; i<Size(); i++) - { - get(i).RestoreBigData(hashtable); + hashtable.remove(GetUUID()); + + for (int i=0; i<Size(); i++) + { + get(i).RestoreBigData(hashtable); + } } -} + + void RestoreBigData(Object3D o) + { + this.bRep = o.bRep; + if (this.bRep != null) + this.bRep.support = o.transientrep; + // this.support = o.support; + // this.fileparent = o.fileparent; + } // MOCAP SUPPORT double tx,ty,tz,rx,ry,rz; @@ -2693,6 +2709,18 @@ //Touch(); } + void GenNormalsMeshS() + { + selection.GenNormalsMesh(); +// for (int i=0; i<selection.size(); i++) +// { +// Object3D selectee = (Object3D) selection.elementAt(i); +// selectee.GenNormals(crease); +// } + + //Touch(); + } + void ClearColorsS() { selection.ClearColors(); @@ -2824,6 +2852,24 @@ if (child == null) continue; child.GenNormals(crease); +// Children().release(i); + } + blockloop = false; + } + + void GenNormalsMesh() + { + if (blockloop) + return; + + blockloop = true; + GenNormalsMesh0(); + for (int i = 0; i < Children().Size(); i++) + { + Object3D child = (Object3D) Children().get(i); // reserve(i); + if (child == null) + continue; + child.GenNormalsMesh(); // Children().release(i); } blockloop = false; @@ -2996,6 +3042,15 @@ } } + void GenNormalsMesh0() + { + if (bRep != null) + { + bRep.GenerateNormalsMesh(); + Touch(); + } + } + void GenNormalsMINE0() { if (bRep != null) -- Gitblit v1.6.2