three.jsで作成したオブジェクトデータを OBJ形式で出力する方法

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Three.js FBX Export Example</title>
    <style>
      body {
        margin: 0;
        padding: 0;
        overflow: hidden;
      }
    </style>
  </head>
  <body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r132/three.min.js"></script>
    <script src="https://cdn.rawgit.com/mrdoob/three.js/r132/examples/js/exporters/OBJExporter.js"></script>
    
    <script>
      const scene = new THREE.Scene();
      const camera = new THREE.PerspectiveCamera(
        75,
        window.innerWidth / window.innerHeight,
        0.1,
        1000
      );
      const renderer = new THREE.WebGLRenderer();
      renderer.setSize(window.innerWidth, window.innerHeight);
      document.body.appendChild(renderer.domElement);

      const geometry = new THREE.BoxGeometry();
      const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
      material.name = 'myBox';
      const cube = new THREE.Mesh(geometry, material);

      scene.add(cube);

      camera.position.z = 5;

      const animate = function () {
        requestAnimationFrame(animate);

        cube.rotation.x += 0.01;
        cube.rotation.y += 0.01;

        renderer.render(scene, camera);
      };

      animate();
      function exportOBJ() {
        const exporter = new THREE.OBJExporter();
        const objData = exporter.parse(scene, { materials: true });

        
        const blob = new Blob([objData], { type: 'text/plain' });
        const url = URL.createObjectURL(blob);
        const link = document.createElement('a');
        link.download = 'model.obj';
        link.href = url;
        link.click();
        
        URL.revokeObjectURL(url);
      }
      exportOBJ();
    </script>
  </body>
</html>

この記事が気に入ったらサポートをしてみませんか?