Three.jsで用意されているジオメトリーのうち、いくつかの表示を試してみます。
サンプルコード
まずジオメトリーを試す前に、Three.jsのそれ以外の部分のコードを用意します。
import * as THREE from 'three';
import {OrbitControls} from 'three/addons/controls/OrbitControls.js';
// シーンの作成
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 controls = new OrbitControls(camera, renderer.domElement);
// カメラの位置変更と更新
camera.position.set(200, 100, 200);
controls.update();
// オブジェクトの作成
// ここに追加
function animate() {
renderer.render(scene, camera);
}
renderer.setAnimationLoop(animate);
23行目部分にジオメトリーの追加などを行っていきます。
今回は枠組みが分かりやすいように、materialのwireframeをtrueにして確認します。
BoxGeometry
BoxGeometryは直方体です。
引数は6つあり、1つ目は幅(X軸)、2つ目は高さ(Y軸)、3つ目は奥行き(Z軸)でそれぞれの初期値は1になります。
// オブジェクトの作成
const geometry = new THREE.BoxGeometry(100, 100, 100);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
SphereGeometry
SphereGeometryは球体です。
引数は7つあり、1つ目は半径で初期値は1になります。
// オブジェクトの作成
const geometry = new THREE.SphereGeometry(100);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
PlaneGeometry
PlaneGeometryは平面の四角形です。
引数は4つあり、1つ目が幅(X軸)、2つ目が高さ(Y軸)で、それぞれ初期値は1です。
// オブジェクトの作成
const geometry = new THREE.PlaneGeometry(100, 100);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
CircleGeometry
CircleGeometryは平面の円や正多角形です。
引数は4つあり、1つ目が半径で初期値は1、2つ目がセグメントの数で初期値は32です。
// オブジェクトの作成
const geometry = new THREE.CircleGeometry(100, 32);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
2つ目の引数は内側の三角形の数で、例えば引数を6にすると正六角形になります。
// オブジェクトの作成
const geometry = new THREE.CircleGeometry(100, 6);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
TetrahedronGeometry
TetrahedronGeometryは四面体です。
引数は2つで、1つ目が半径で初期値が1になります。
// オブジェクトの作成
const geometry = new THREE.TetrahedronGeometry(100);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
OctahedronGeometry
OctahedronGeometryは八面体です。
引数は2つで、1つ目が半径で初期値が1になります。
// オブジェクトの作成
const geometry = new THREE.OctahedronGeometry(100);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
DodecahedronGeometry
DodecahedronGeometryは十二面体です。
引数は2つで、1つ目が半径で初期値が1になります。
// オブジェクトの作成
const geometry = new THREE.DodecahedronGeometry(100);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
IcosahedronGeometry
IcosahedronGeometryは二十面体です。
引数は2つで、1つ目が半径で初期値が1になります。
// オブジェクトの作成
const geometry = new THREE.IcosahedronGeometry(100);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
ConeGeometry
ConeGeometryは円錐です。
引数は7つで、1つ目が底部の半径、2つ目が高さで、それぞれ初期値は1です。
// オブジェクトの作成
const geometry = new THREE.ConeGeometry(100, 200);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
CylinderGeometry
CylinderGeometryは円柱です。
引数は8つあり、1つ目が上部の半径、2つ目が下部の半径、3つ目が高さで、それぞれ初期値は1です。
// オブジェクトの作成
const geometry = new THREE.CylinderGeometry(100, 100, 200);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
CapsuleGeometry
CapsuleGeometryはカプセル型です。
引数は4つで、1つ目が半径、2つ目が中央部分の高さで、それぞれ初期値は1です。
// オブジェクトの作成
const geometry = new THREE.CapsuleGeometry(100, 200);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
TorusGeometry
TorusGeometryはドーナツ型です。
引数は5つあり、1つ目が中心から周囲の輪郭の中心までの半径で初期値は1、2つ目が輪郭部分の半径で初期値は0.4になります。
// オブジェクトの作成
const geometry = new THREE.TorusGeometry(100, 20);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
RingGeometry
RingGeometryは平面のリング状です。
引数は6つあり、1つ目が内側の半径で初期値は0.5、2つ目が全体の半径で初期値は1になります。
// オブジェクトの作成
const geometry = new THREE.RingGeometry(20, 50);
const material = new THREE.MeshBasicMaterial({
color: "orange"
});
material.wireframe = true;
const object = new THREE.Mesh(geometry, material);
scene.add(object);
コメントが承認されるまで時間がかかります。