From 818a4faf0214ee705064e500327a32c4265f8d62 Mon Sep 17 00:00:00 2001
From: Amira Abdel-Rahman <amira-rahman@aucegypt.edu>
Date: Wed, 8 Apr 2020 07:19:50 -0400
Subject: [PATCH] wip

---
 .DS_Store                                     | Bin 6148 -> 0 bytes
 .gitignore                                    |   3 +
 .gitmodules                                   |   3 +
 01_Code/.DS_Store                             | Bin 6148 -> 0 bytes
 01_Code/physical_computing_interface/app.js   |   9 +-
 .../physical_computing_interface/globals.js   |  43 ++++
 .../indexSimulation.html                      | 227 ++++++++++++++++++
 .../physical_computing_interface/metavoxels   |   1 +
 .../computingGraph.js                         |  10 +-
 .../probabilisticProjection.js                |  21 +-
 .../threejs/StandAloneGrid.js                 |  46 +++-
 11 files changed, 349 insertions(+), 14 deletions(-)
 delete mode 100644 .DS_Store
 create mode 100644 .gitignore
 create mode 100644 .gitmodules
 delete mode 100644 01_Code/.DS_Store
 create mode 100644 01_Code/physical_computing_interface/indexSimulation.html
 create mode 160000 01_Code/physical_computing_interface/metavoxels

diff --git a/.DS_Store b/.DS_Store
deleted file mode 100644
index 1e63dbbde85deb2a056f7b6417b2a945c7e5e179..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6148
zcmZQzU|@7AO)+F(5MW?n;9!8zOq>i@0Z1N%F(jFwBFrH3z-Ht#q%fqG1sCPz<U{2~
zslgorptxgaFkmobh-YwSK#IS-bV#f+@G}@N7%{{%1TYjaq%ssUq%!0&lrSVRlrUs6
z<TK<Yl@}Kz<>V(ZFfg1<D#*z!E-^5;&d9{f!pg?Z!NJAB#mf~NoRME1T#{H)TI`fq
z6b<49B$i|(LD?bs`8jZQVp3RUYI(eXh;x2kNn&PRY7t0zaArzsQesg|cxGNoez{YA
zX<kY(*c_+?2L~qyXS{$!b+xgvsg8oNu|chlLbbWMfsTTSu~}^`Cx^JIp{-{^Ze>+<
zO>NywNSrV-LTCnlC=H`#F)$GFHYAb50|};clpYO%(GVC7fguqB(BhASdq}u;)RChh
zFd72%3;|I2pa5+JIzZ_L2n~{AU}RtbcL5j~7+7HLVg&aC7(j9$tsokt6-0xyGBAQz
zU^Bp485p5j8NuBUkUmhC1Vn?iGcYoMwKFg>fVDHg+H8yv?F@`in;D@!6h?@421bZ>
z21bZ>nDa*I(GVC70cZ$-`hK9kKdAn9WnjS7|A(p`rA9+wGz5lY2r#m^1iLtaD`o87
z1J$*l`ZNJ54XXV?)iEQeo<@j)t70a|fT9Fc7*ySZw1Q}GRm{i$smVth0<aJorAI@6
H{viMW`omrp

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3b26156
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+node_modules
+.ipynb_checkpoints
+.DS_Store
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..e6fde3a
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "01_Code/physical_computing_interface/metavoxels"]
+	path = 01_Code/physical_computing_interface/metavoxels
+	url = ssh://git@gitlab.cba.mit.edu:846/amiraa/metavoxels.git
diff --git a/01_Code/.DS_Store b/01_Code/.DS_Store
deleted file mode 100644
index b4d729aade8d865345c9d077fa96ee62015352bd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6148
zcmZQzU|@7AO)+F(5MW?n;9!8zOq>i@0Z1N%F(jFwA|RR(Y(^$SGD9Lm4nsUcGE{Dq
z8r&fOiaQyG0)`BRN`_(v<oL^H$Ym&CC}k*N$YjW4NN0!#(<Kb43`GoS42cZM45>-w
z#RW+@`AG~645yO{ax#lc3=FO_GBLBTvaxe;aB*<)a>WK`<d+ARB$kvGJ0%uHgLnan
zB^gOjc1V7H4xF8s6qcD<9xou`oS#>cn3<Pa1X3QHnUb26SQHbUnU|7Z?v!7emr@Ki
z2P(nA!O6iHFCbN2t!rp(VydHHWMNvXqfl*bZlI%JVr*7h%gG_GYG~`3kXu<*T~k{(
z8xkXoj1ZcEA4<chISdR8WCuxEa8X`PeqK5#i@^*WrAI?xGz3ONV6cS%v;gGb9&8R9
zb<b!BjE2B~hXAO2P=GdM9H4Xqga%15FfuTJnvWow1?E^tKY#%w2GR<mL0UmHNGk&)
zhy^wStd)V00iu-=+zkQg19eG2G*~+WBLi4F10w@iI|HoM#t6~QzzEUKzzFT3FhaC5
zFhaC5FhaD$oHt63hQMeDKtq5TLJNTEe^&+uT>XEDs!?(@1V%$(ScU*2i%YPJ6Sz{w
z?mtjn3#v~Opwgh)A5<MPg6e667`Q5Cf($51K!rioJxD8v23N(543L_9v>^Zsp;3A?
I1n3_E0Kv>-YXATM

diff --git a/01_Code/physical_computing_interface/app.js b/01_Code/physical_computing_interface/app.js
index 3b34e3d..f40627e 100644
--- a/01_Code/physical_computing_interface/app.js
+++ b/01_Code/physical_computing_interface/app.js
@@ -14,9 +14,16 @@ three.init();
 initGraph();// todo enclose into class
 initEditor();// todo enclose into class
 
-var assembler= new Assembler(three,GLOBALS,1,50,[new THREE.Vector3(GLOBALS.gridSize*GLOBALS.voxelSpacing,0,0)],[new THREE.Vector3(GLOBALS.gridSize*GLOBALS.voxelSpacing,0,GLOBALS.gridSize/2.0*GLOBALS.voxelSpacing)]);
+// changed for assembler
+// var assembler= new Assembler(three,GLOBALS,1,50,[new THREE.Vector3(GLOBALS.gridSize*GLOBALS.voxelSpacing,0,0)],[new THREE.Vector3(GLOBALS.gridSize*GLOBALS.voxelSpacing,0,GLOBALS.gridSize/2.0*GLOBALS.voxelSpacing)]);
+// assembler.run();
+
+
+/////////////simulation////////////////////
+var assembler= new Assembler(three,GLOBALS,1,50,[new THREE.Vector3(0,0,0)],[new THREE.Vector3(GLOBALS.gridSize/2.0*GLOBALS.voxelSpacing,0,0)]);
 assembler.run();
 
+
 // old simulation stuff
 // var setup;
 // $.getJSON("./simulation/json/setup.json", function(json) {
diff --git a/01_Code/physical_computing_interface/globals.js b/01_Code/physical_computing_interface/globals.js
index ecb3a6a..b290bf8 100644
--- a/01_Code/physical_computing_interface/globals.js
+++ b/01_Code/physical_computing_interface/globals.js
@@ -215,6 +215,49 @@ function globals(utils){
                 {x: 1,y: 1,z: 1} 
             ]
             
+        },
+        Dice3:  {
+            xScale:1.0,
+            yScale:0.5,
+            zScale:0.2,
+            xLineOffset:0.5,
+            yLineOffset:0.0,
+            xLayerOffset:0.0,
+            yLayerOffset:0.5,
+            doubleOffset:true,
+            xLayerOffset2:0.5,
+            yLayerOffset2:0.5,
+            zLayerRotation:Math.PI/2.0,
+            voxelSpacing:this.voxelSpacing,
+            gridSize:this.gridSize,
+            voxelScaleX:0.5,
+            voxelScaleY:0.9,
+            voxelScaleZ:0.2,
+            neighbors:[ // layer 0, 4,8
+                {x: 0,y:-1,z:-1},
+                {x:-1,y:-1,z:-1},
+                {x: 0,y:-1,z: 1},
+                {x: 0,y: 0,z: 1}
+            ],
+            neighborsLayerOffset:[ // layer 1, 5, 9
+                {x: 0,y: 1,z:-1},
+                {x: 0,y: 0,z:-1},
+                {x:-1,y: 0,z: 1},
+                {x: 0,y: 0,z: 1} 
+            ],
+            neighborsLayerOffset1:[ // layer 2, 6, 19
+                {x: 1,y: 0,z:-1},
+                {x: 0,y: 0,z:-1},
+                {x: 0,y:-1,z: 1},
+                {x: 0,y: 0,z: 1} 
+            ],
+            neighborsLayerOffset2:[ // layer 3, 7, 11
+                {x: 0,y: 1,z:-1},
+                {x: 0,y: 0,z:-1},
+                {x: 0,y: 1,z: 1},
+                {x: 1,y: 1,z: 1} 
+            ]
+            
         }
         
         
diff --git a/01_Code/physical_computing_interface/indexSimulation.html b/01_Code/physical_computing_interface/indexSimulation.html
new file mode 100644
index 0000000..5bb684b
--- /dev/null
+++ b/01_Code/physical_computing_interface/indexSimulation.html
@@ -0,0 +1,227 @@
+<html>
+
+<head>
+    <title>Physical Computing Interface</title>
+    <link rel="stylesheet" type="text/css" href="./css/style.css" media="screen"/>
+    <link rel="stylesheet" type="text/css" href="./lib/jsoneditor/jsoneditor.css" >
+
+    <!-- assembler control css -->
+    <link rel="stylesheet" href="./css/bootstrap.min.css">
+    <link rel="stylesheet" type="text/css" href="./css/styleAssemblerControl.css" media="screen"/>
+
+    <!-- <link href="https://unpkg.com/font-awesome@5.8.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" /> -->
+    <!-- <link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css" rel="stylesheet"> -->
+    <script src="https://kit.fontawesome.com/99c302ff33.js" crossorigin="anonymous"></script>
+
+</head>
+        
+<body>
+
+    <div id="threejs">
+        <div id="threejs1">
+            <div class="header1">
+                    <i> Assembly</i>
+                    <!-- Three.js -->
+            </div>
+            
+            <div id="webgl"></div>
+        </div>
+        <div class="slidecontainer">
+                <input type="range" min="0" max="0" value="1" class="slider" id="time">
+        </div>
+            
+    </div>
+
+    <div id="simulation">
+        <div id="threejs1">
+            <div class="header1">
+                    <i> Simulation </i>
+            </div>
+            <div class="dragbar2"></div>
+            <div id="webgl1"></div>
+            
+            
+        </div>
+            
+    </div>
+    
+
+
+    <div id="graph">
+            <div class="header2">
+                    <div class="dragbar"></div> 
+                <i> Graph</i>
+            </div>
+            <div id=jsondiveditor>
+                
+                <div id="cy"></div>
+            </div>
+            <div class="dragbar"></div> 
+            
+            
+    </div>
+
+    <div id="json">
+            
+
+            <div class="header2">
+                    <div class="dragbar"></div> 
+                <i> Node</i>
+            </div>
+            
+            
+            <div id=jsondiveditor>
+                    
+                <br></br>
+                    <!-- <p>
+                        <button class="button" id="setJSON">Get Info</button>
+                        <button class="button" id="getJSON">Set Info</button>
+                    </p> -->
+                
+                    <div id="jsoneditor"></div>
+            </div>
+            <div class="dragbar"></div> 
+            <div class="dragbar1"></div>
+            
+            
+            
+    </div>
+
+    <div class="footer1">
+        <strong>left-click</strong>: place voxel/orbit, <strong>right-click</strong>: radial menu
+    </div>
+
+    <div class="footer2">
+        <!-- update change to more instructions/feedback -->
+        <i>instructions</i>
+    </div>
+
+</body>
+
+<!-- TODO: 
+            Clean structure to modules?
+            Add another footer
+             
+-->
+
+
+<!-- libraries -->
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
+
+<script src="./lib/cytoscape.min.js"></script>
+<script src="./lib/cytoscape-cxtmenu.js"></script>
+<script src="https://unpkg.com/layout-base/layout-base.js"></script>
+<script src="https://unpkg.com/cose-base/cose-base.js"></script>
+<script src="https://unpkg.com/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js"></script>
+<script src="./lib/cytoscape-expand-collapse.js"></script>
+
+
+<script src="./lib/jsoneditor/jsoneditor.js"></script>
+
+<script src="./lib/opencv.js"></script>
+
+
+<script src="./lib/three.min.js"></script>
+<script src="./lib/OrbitControls.js"></script>
+<script src="./lib/dat.gui.min.js"></script>
+<script src="./lib/TransformControls.js"></script>
+
+<script src="./assembly/InverseKinematic.js"></script><!-- TODO LOCATION -->
+<script src="./assembly/voxel.js"></script><!-- TODO CHANGE TO DICE PIECES -->
+
+<!-- simulation stuff -->
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
+<!-- <script type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script> -->
+<script src="./rhino3dm.js"></script>
+<!-- <script async type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/rhino3dm.js"></script>
+<script async type="text/javascript" src="https://files.mcneel.com/rhino3dm/js/latest/compute.rhino3d.js"></script> -->
+
+<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js"></script>
+
+<!-- simulation -->
+<!-- <script src="./simulation/lib/stats.js"></script>
+<script src="./simulation/lib/SVGRenderer.js"></script>
+<script src="./simulation/lib/js-colormaps.js"></script>
+<script src="./simulation/lib/LineSegments2.js"></script>
+<script src="./simulation/lib/LineSegmentsGeometry.js"></script>
+<script src="./simulation/lib/Line2.js"></script>
+<script src="./simulation/lib/LineMaterial.js"></script>
+<script src="./simulation/lib/LineGeometry.js"></script>
+<script src="./simulation/lib/GeometryUtils.js"></script>
+
+<script src="./simulation/fea/beamFea.js"></script> 
+<script src="./simulation/visualization/geometry.js"></script> 
+
+<script src="./simulation/visualization/utils.js"></script> 
+<script src="./simulation/visualization/main.js"></script>  -->
+
+<!-- assembler control -->
+<script src="./assembly/assemblerControl/utils.js" type="text/javascript"></script>
+<script src="./assembly/assemblerControl/setup.js" type="text/javascript"></script>
+<script src="./assembly/assemblerControl/processing.js" type="text/javascript"></script>
+<script src="./assembly/assemblerControl/serialMonitor.js" type="text/javascript"></script>
+<script type="text/javascript" src="./assembly/assemblerControl/bootstrap-multiselect.js"></script>
+
+
+<!-- code -->
+<script src="./globals.js"></script> <!-- event handling and GLOBALS,UTILS -->
+<script src="./threejs/grid.js"></script><!-- threejs visualization -->
+<script src="./assembly/assembly.js"></script><!-- robot assembly -->
+<script src="./assembly/replay.js"></script><!-- assembly and timestep handling -->
+<script src="./graph/graph.js"></script><!-- graph flow visualization-->
+<script src="./json/json.js"></script><!-- json -->
+
+<script src="./app.js"></script><!-- threejs visualization -->
+
+<!-- windows control -->
+<script>
+    var i = 0;
+   $('.dragbar').mousedown(function(e){
+       
+        e.preventDefault();
+        $(document).mousemove(function(e){
+        //   $('#position').html(e.pageX +', '+ e.pageY);
+          $('#threejs').css("width",e.pageX+2);
+
+          $('#simulation').css("width",e.pageX+2);
+
+          $('#graph').css("left",e.pageX+2);
+          $('#json').css("left",e.pageX+2);
+          $('.footer1').css("width",e.pageX+2);
+          $('.footer2').css("left",e.pageX+2);
+          
+       })
+    //    onWindowResize();//todo change location
+    });
+
+    $('.dragbar1').mousedown(function(e){
+       e.preventDefault();
+       // $('#mousestatus').html("mousedown" + i++);
+       $(document).mousemove(function(e){
+        $('#graph').css("height",e.pageY+2);
+        $('#json').css("top",e.pageY+2);
+         
+      })
+   });
+
+   $('.dragbar2').mousedown(function(e){
+       e.preventDefault();
+       // $('#mousestatus').html("mousedown" + i++);
+       $(document).mousemove(function(e){
+        $('#threejs').css("height",e.pageY+2);
+        $('#simulation').css("top",e.pageY+2);
+         
+      })
+    //   onWindowResize();//todo change location
+   });
+
+   $(document).mouseup(function(e){
+       $(document).unbind('mousemove');
+    });
+
+</script>
+
+
+
+
+</html>
\ No newline at end of file
diff --git a/01_Code/physical_computing_interface/metavoxels b/01_Code/physical_computing_interface/metavoxels
new file mode 160000
index 0000000..5d349cc
--- /dev/null
+++ b/01_Code/physical_computing_interface/metavoxels
@@ -0,0 +1 @@
+Subproject commit 5d349cccfa3df367a5f84228dd07044d4eece9b0
diff --git a/01_Code/physical_computing_interface/probabilisticProjections/computingGraph.js b/01_Code/physical_computing_interface/probabilisticProjections/computingGraph.js
index f5e4ffd..21af8ee 100644
--- a/01_Code/physical_computing_interface/probabilisticProjections/computingGraph.js
+++ b/01_Code/physical_computing_interface/probabilisticProjections/computingGraph.js
@@ -429,14 +429,14 @@ updateVariable("costPerChip", costPerChip   ,"dollars" );
 updateVariable("flopsPerWatt", flopsPerWatt ,""  );
 
 const interconnect=4; //2,4,6
-const nodesNumber= 50; //10,20,30,40,50
+const nodesNumber= 10; //10,20,30,40,50
 updateVariable("interconnect", interconnect,"neighbour");
 updateVariable("nodesNumber", nodesNumber,"nodes");
 
-var dataExchangeSize= 1e3; 
-var memoryPerComputation= 10e3;
-var numberofComputations= 200; //nodes of similar computations
-var computation= 100; //cylces
+var dataExchangeSize= 37e6*32; 
+var memoryPerComputation= 37e6*32;
+var numberofComputations= 1; //nodes of similar computations
+var computation= 150e6; //cylces
 var maxNumberOfInterconnects= 10;
 
 updateVariable("dataExchangeSize", dataExchangeSize,"bytes");
diff --git a/01_Code/physical_computing_interface/probabilisticProjections/probabilisticProjection.js b/01_Code/physical_computing_interface/probabilisticProjections/probabilisticProjection.js
index 02b85a8..62e969b 100644
--- a/01_Code/physical_computing_interface/probabilisticProjections/probabilisticProjection.js
+++ b/01_Code/physical_computing_interface/probabilisticProjections/probabilisticProjection.js
@@ -109,7 +109,7 @@ let processors={
 
 var model=function (){
 
-  var chipType=function () {	return uniformDraw(["STM32F412","samd51j19","samd51j20","MAX32660","STM32F412","XMEGA"])};
+  var chipType=function () {	return uniformDraw(["STM32F412","samd51j19","samd51j20","STM32F412","XMEGA"])};//"MAX32660",
   var chip=processors.type[chipType()];
   //display(chip.name);
 
@@ -120,14 +120,20 @@ var model=function (){
   var flopsPerWatt    =chip.flopsPerWatt   ;
 
   var interconnect=mem(function (model) {	return uniformDraw([2,4,6])});
-  var nodesNumber= mem(function (model) {	return uniformDraw([10,20,30,40,50])});
+  var nodesNumber= mem(function (model) {	return uniformDraw([10,20,30,40,50,100,200])});
 
   var dataExchangeSize=mem(function (model) {return gaussian(1e3, 10)}); //really needed?
-  var memoryPerComputation=mem(function (model) {return gaussian(10e3, 10)}); //really needed?
-  var numberofComputations=mem(function (model) {return gaussian(200, 10)}); //nodes of similar computations
-  var computation = mem(function (model) {return gaussian(100, 20)}); //Todo i could remove 
+  var memoryPerComputation=mem(function (model) {return gaussian(35e3, 100)}); //really needed?
+  var numberofComputations=mem(function (model) {return gaussian(1, 0.1)}); //nodes of similar computations
+  var computation = mem(function (model) {return gaussian(105e6, 10)}); //Todo i could remove 
   var maxNumberOfInterconnects= mem(function (model) {return gaussian(10, 2)}); //Todo i could remove 
 
+  // var dataExchangeSize=mem(function (model) {return gaussian(1e3, 10)}); //really needed?
+  // var memoryPerComputation=mem(function (model) {return gaussian(10e3, 10)}); //really needed?
+  // var numberofComputations=mem(function (model) {return gaussian(200, 10)}); //nodes of similar computations
+  // var computation = mem(function (model) {return gaussian(100, 20)}); //Todo i could remove 
+  // var maxNumberOfInterconnects= mem(function (model) {return gaussian(10, 2)}); //Todo i could remove 
+
 
 
   var getComputationDelay=function(memoryPerComputation,ram,numberofComputations){
@@ -207,7 +213,8 @@ var model=function (){
   // display('cost: ' + DICE[1])
   // display('energy: ' + DICE[2])
 
-  condition(speed<0.0012 && cost<180);
+  condition(speed<100 && cost<18000);
+  // condition(speed<0.0012 && cost<180);
   // return [speed,cost,energy]
 
   if(result==1){
@@ -225,7 +232,7 @@ var model=function (){
 
 // var DICE= model();
 
-var result=2;
+var result=3;
 var options = {method: 'MCMC', kernel: 'MH', samples: 10000}
 var dist = Infer(options, model)
 viz(dist)
diff --git a/01_Code/physical_computing_interface/threejs/StandAloneGrid.js b/01_Code/physical_computing_interface/threejs/StandAloneGrid.js
index 1db5873..9c723cb 100644
--- a/01_Code/physical_computing_interface/threejs/StandAloneGrid.js
+++ b/01_Code/physical_computing_interface/threejs/StandAloneGrid.js
@@ -217,12 +217,55 @@ var gridPresets={
             {x: 1,y: 1,z: 1} 
         ]
 		
+    },
+    Dice3:  {
+        xScale:1.0,
+        yScale:0.5,
+        zScale:0.2,
+        xLineOffset:0.5,
+        yLineOffset:0.0,
+        xLayerOffset:0.0,
+        yLayerOffset:1.0,
+        doubleOffset:false,
+        xLayerOffset2:0.5,
+        yLayerOffset2:0.5,
+        zLayerRotation:Math.PI/2.0,
+        voxelSpacing:this.voxelSpacing,
+        gridSize:this.gridSize,
+        voxelScaleX:0.5,
+        voxelScaleY:0.9,
+        voxelScaleZ:0.2,
+        neighbors:[ // layer 0, 4,8
+            {x: 0,y:-1,z:-1},
+            {x:-1,y:-1,z:-1},
+            {x: 0,y:-1,z: 1},
+            {x: 0,y: 0,z: 1}
+        ],
+        neighborsLayerOffset:[ // layer 1, 5, 9
+            {x: 0,y: 1,z:-1},
+            {x: 0,y: 0,z:-1},
+            {x:-1,y: 0,z: 1},
+            {x: 0,y: 0,z: 1} 
+        ],
+        neighborsLayerOffset1:[ // layer 2, 6, 19
+            {x: 1,y: 0,z:-1},
+            {x: 0,y: 0,z:-1},
+            {x: 0,y:-1,z: 1},
+            {x: 0,y: 0,z: 1} 
+        ],
+        neighborsLayerOffset2:[ // layer 3, 7, 11
+            {x: 0,y: 1,z:-1},
+            {x: 0,y: 0,z:-1},
+            {x: 0,y: 1,z: 1},
+            {x: 1,y: 1,z: 1} 
+        ]
+        
     }
     
     
 }
 
-var grid=gridPresets.Dice;
+var grid=gridPresets.Dice3;
 var gridSize=20.0;
 
 init();
@@ -453,6 +496,7 @@ function buildVoxelAt( grid,x, y,z){
     // voxel.scale.y=grid.voxelScaleZ;
 
     // console.log([voxel.position.x ,voxel.position.y ,voxel.position.z ,voxel.scale.x,voxel.scale.y,voxel.scale.z,voxel.rotation.y])
+    console.log([x,y,z])
 
     // voxel.position.x=0.0;
     // voxel.position.y=0.0;
-- 
GitLab