index.html 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <head>
  2. <style> body { margin: 0; } </style>
  3. <script src="//unpkg.com/three"></script>
  4. <script src="//unpkg.com/3d-force-graph"></script>
  5. <!--<script src="../../dist/3d-force-graph.js"></script>-->
  6. </head>
  7. <body>
  8. <div id="3d-graph"></div>
  9. <script>
  10. // Random tree
  11. const N = 100;
  12. const gData = {
  13. nodes: [...Array(N).keys()].map(i => ({ id: i })),
  14. links: [...Array(N).keys()]
  15. .filter(id => id)
  16. .map(id => ({
  17. source: id,
  18. target: Math.round(Math.random() * (id-1))
  19. }))
  20. };
  21. const Graph = ForceGraph3D()
  22. (document.getElementById('3d-graph'))
  23. .nodeThreeObject(({ id }) => new THREE.Mesh(
  24. [
  25. new THREE.BoxGeometry(Math.random() * 20, Math.random() * 20, Math.random() * 20),
  26. new THREE.ConeGeometry(Math.random() * 10, Math.random() * 20),
  27. new THREE.CylinderGeometry(Math.random() * 10, Math.random() * 10, Math.random() * 20),
  28. new THREE.DodecahedronGeometry(Math.random() * 10),
  29. new THREE.SphereGeometry(Math.random() * 10),
  30. new THREE.TorusGeometry(Math.random() * 10, Math.random() * 2),
  31. new THREE.TorusKnotGeometry(Math.random() * 10, Math.random() * 2)
  32. ][id%7],
  33. new THREE.MeshLambertMaterial({
  34. color: Math.round(Math.random() * Math.pow(2, 24)),
  35. transparent: true,
  36. opacity: 0.75
  37. })
  38. ))
  39. .graphData(gData);
  40. </script>
  41. </body>