1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Three.jsに入門

Last updated at Posted at 2024-08-27

とりあえず、このサイトを見て勉強。

まずはHTMLファイルを用意して、次のコードを貼り付けて試してください。

と言うので、とりあえず、下記コードを貼り付けて実行.

html
<html>
  <head>
    <meta charset="utf-8" />
    <script type="importmap">
      {
        "imports": {
          "three": "https://cdn.jsdelivr.net/npm/three@0.167.0/build/three.module.js"
        }
      }
    </script>
    <script type="module">
      import * as THREE from "three";

      // サイズを指定
      const width = 960;
      const height = 540;

      // レンダラーを作成
      const renderer = new THREE.WebGLRenderer({
        canvas: document.querySelector("#myCanvas"),
      });
      renderer.setPixelRatio(window.devicePixelRatio);
      renderer.setSize(width, height);

      // シーンを作成
      const scene = new THREE.Scene();

      // カメラを作成
      const camera = new THREE.PerspectiveCamera(45, width / height);
      camera.position.set(0, 0, +1000);

      // 箱を作成
      const geometry = new THREE.BoxGeometry(400, 400, 400);
      const material = new THREE.MeshNormalMaterial();
      const box = new THREE.Mesh(geometry, material);
      scene.add(box);

      tick();

      // 毎フレーム時に実行されるループイベントです
      function tick() {
        box.rotation.y += 0.01;
        renderer.render(scene, camera); // レンダリング

        requestAnimationFrame(tick);
      }
    </script>
  </head>
  <body>
    <canvas id="myCanvas"></canvas>
  </body>
</html>

実行環境は、Vue.js 勉強の時に用意してた、VS Code に Live Server という拡張機能を入れたもの。

実行すると、こんな画面表示になった。

1.PNG

平面のスクリーンショットだとわかりにくいですが、この箱は(自動的に)横回転しています。

1_2.PNG

(追記) CodePen で書いた

See the Pen three.js 入門1_1 by sasuke (@vhmbdiog-the-flexboxer) on CodePen.

その2

サンプルのこの辺のソースをいじってこの箱を複数個にしてみた。

html
      // 箱を作成
      const geometry = new THREE.BoxGeometry(400, 400, 400);
      const material = new THREE.MeshNormalMaterial();
      const box = new THREE.Mesh(geometry, material);
      scene.add(box);

      // 箱2を作成
      const geometry2 = new THREE.BoxGeometry(200, 200, 200);
      const box2 = new THREE.Mesh(geometry2, material);
      //場所を変える
      box2.position.x = 400;
      box2.position.z = 400;
      scene.add(box2);

      // 箱3を作成
      const geometry3 = new THREE.BoxGeometry(100, 100, 100);
      const box3 = new THREE.Mesh(geometry2, material);
      //場所を変える
      box3.position.x = -600;
      box3.position.z = -400;
      scene.add(box3);

      tick();

      // 毎フレーム時に実行されるループイベントです
      function tick() {
        box.rotation.y += 0.01; //y回転
        box2.rotation.z += 0.01;  //z回転
        box3.rotation.x += 0.01;  //x回転
        
        renderer.render(scene, camera); // レンダリング

        requestAnimationFrame(tick);
      }

画面表示はこうなりました。

・箱を増やす。
・位置を重ならないようにずらす。

2.PNG

また、回転の軸もそれぞれ別の軸にしています。

html
      // 毎フレーム時に実行されるループイベントです
      function tick() {
        box.rotation.y += 0.01; //y回転
        box2.rotation.z += 0.01;  //z回転
        box3.rotation.x += 0.01;  //x回転

2_1.PNG

箱は少しずつ回転してます。

2_2.PNG

(追記) CodePen で書いた

See the Pen three.js 入門1_2 by sasuke (@vhmbdiog-the-flexboxer) on CodePen.

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?