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