Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" href="https://developer.api.autodesk.com/modelderivative/v2/viewers/style.min.css?v=v7.*" type="text/css">
  <script language="JavaScript" src="https://developer.api.autodesk.com/modelderivative/v2/viewers/viewer3D.min.js?v=v7.*"></script>
  <meta name="viewport" content="width=device-width">
<style>
</style>
</head>
<body>
  <div></div>
</body>
</html>
 
#ViewerPropertyPanel{opacity:0.5}
#ViewerPropertyPanel .docking-panel-title {opacity:0.5}
 
let loaded = false
const  jsonGeomConfig={   "NumOfSphere": 3,   "geom": [     {       "dbId": "123",       "color": "#FF0000",       "Position": {         "posX": "-5",         "posY": "-1",         "posZ": "2.5"       }     },     {       "dbId": "1234",       "color": "#0000FF",       "Position": {         "posX": "-5",         "posY": "-0.8",         "posZ": "1.8"       }     },     {       "dbId": "12345",       "color": "green",       "Position": {         "posX": "-3.5",         "posY": "-1.5",         "posZ": "1.8"       }     }   ]   }
Autodesk.Viewing.Initializer({env:'Local'}, ()=>{new Autodesk.Viewing.GuiViewer3D(document.body.children[0],{disableBrowserContextMenu:false}).start('https://dukedhx.github.io/Forge-Workshop/shaver/0.svf');
                                             
                                               NOP_VIEWER.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT, async ()=>{  
 if(!loaded)loaded=true; 
 else return;
var sphereMaterial = [];
const button = document.getElementById('button-geometry');
  const sceneBuilder = await NOP_VIEWER.loadExtension('Autodesk.Viewing.SceneBuilder');
  const modelBuilder = await sceneBuilder.addNewModel({ conserveMemory: true, modelNameOverride: 'My Custom Model' });
  for (let i = 0; i < jsonGeomConfig.NumOfSphere;i++) {
    addGeometry(modelBuilder, jsonGeomConfig.geom[i].dbId, i);
  }
function addGeometry(modelBuilder, dbId, i) {
  const sphereGeometry = new THREE.BufferGeometry().fromGeometry(new THREE.SphereGeometry(0.05, 8, 10));
console.log(jsonGeomConfig.geom[i].color)
  sphereMaterial[i] = new THREE.MeshPhongMaterial({ color: jsonGeomConfig.geom[i].color });
  const sphereTransform = new THREE.Matrix4().compose(
    new THREE.Vector3(jsonGeomConfig.geom[i].Position.posX, jsonGeomConfig.geom[i].Position.posY, jsonGeomConfig.geom[i].Position.posZ),
    new THREE.Quaternion(0, 0, 0, 1),
    new THREE.Vector3(2,2,2)
  );
  modelBuilder.addMaterial('MyCustomMaterial'+i, sphereMaterial[i]);
  const sphereGeomId = modelBuilder.addGeometry(sphereGeometry);
  const sphereFragId = modelBuilder.addFragment(sphereGeomId, 'MyCustomMaterial'+i, sphereTransform);
  modelBuilder.changeFragmentsDbId(sphereFragId, dbId);
}
                                               })
                                      
                                                })
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
dukedhxpro
0viewers