このセクションでは、球体、平面、そして角丸の立方体を表示する方法を学びます。
球体を表示するには、create.sphere()
を使います。
const { camera, create, animate, controls, helper } = init();
controls.connect()
helper.grid()
helper.axes()
camera.position.set(-2, 2, 2)
create.ambientLight()
create.directionalLight()
create.sphere()
animate()
立方体と同様に、デフォルトでは原点 (0, 0, 0) に表示されます。
球体のサイズ、位置、色の変更も、立方体と同様にできます。
const { camera, create, animate, controls, helper } = init();
controls.connect()
helper.grid()
helper.axes()
camera.position.set(-2, 2, 2)
create.ambientLight()
create.directionalLight()
create.sphere({
size: 0.5,
position: [1, 1, 1],
option: {
color: 0xff0000,
}
})
animate()
球体のセグメント数を変更することもできます。
3Dの描画では、球体を表現するために多数の平面を使っています。
平面の数が多くなるほど、球体の表現が滑らかになります。
セグメント数とは、球体をどの程度平面に分割するかの数値です。
create.sphere({ segments: [横の分割数, 縦の分割数] })
もし横と縦の分割数が同じ場合は、次のように省略して記述できます。
create.sphere({ segments: 縦横の分割数 })
例えば、次のように記述すると、横4分割、縦2分割の球体が表示されます。
const { camera, create, animate, controls, helper } = init();
controls.connect()
helper.grid()
helper.axes()
camera.position.set(-2, 2, 2)
create.ambientLight()
create.directionalLight()
create.sphere({ segments: [4, 2] })
animate()
球がどのように分割されているかを確認するには、 次のようにワイヤーフレーム表示にするとわかりやすいです。
const { camera, create, animate, controls, helper } = init();
controls.connect()
helper.grid()
helper.axes()
camera.position.set(-2, 2, 2)
create.ambientLight()
create.directionalLight()
create.sphere({
segments: 10,
option: {
wireframe: true,
color: 0x0000ff,
},
})
animate()
球体を表示するには、create.plane()
を使います。
const { camera, create, animate, controls, helper } = init();
controls.connect()
helper.grid()
helper.axes()
camera.position.set(-1, 1, 1)
create.ambientLight()
create.directionalLight()
create.plane()
animate()
立方体と同様に、デフォルトでは原点 (0, 0, 0) に表示されます。
向きは、x-z
平面になります。
平面のサイズ、位置、色の変更も、立方体と同様にできます。
const { camera, create, animate, controls, helper } = init();
controls.connect()
helper.grid()
helper.axes()
camera.position.set(-1, 1, 1)
create.ambientLight()
create.directionalLight()
create.plane({
size: 1.5,
position: [1, 0, 0],
option: {
color: 0xff0000,
}
})
animate()
rotation
を指定することで、平面を回転させることができます。rotation
は、[x, y, z]
の配列で指定します。
回転角はラジアンで指定します (つまり、180度が Math.PI
です)。
例えば、x軸周りに -90
度回転させることで、x-z
平面上に平面を表示することができます。
const { camera, create, animate, controls, helper } = init();
controls.connect()
helper.grid()
helper.axes()
camera.position.set(-1, 1, 1)
create.ambientLight()
create.directionalLight()
create.plane({
size: 1.5,
rotation: [-Math.PI/2, 0, 0],
})
animate()
立方体を作成するとき、rounded: true
を指定することで、角丸の立方体を表示することができます。segments
で角丸の滑らかさを指定します。radius
で角丸の半径を指定します。
const { camera, create, animate, controls, helper } = init();
controls.connect()
helper.grid()
helper.axes()
camera.position.set(-1, 1, 1)
create.ambientLight()
create.directionalLight()
create.cube({
rounded: true,
segments: 7,
radius: 0.1,
})
animate()
トーラスを表示するには、create.torus()
を使います。
トーラスは、ドーナツのような形状です。
tube
に数値を指定することで、トーラスの太さを調整できます。
const { camera, create, animate, controls, helper } = init();
controls.connect()
helper.grid()
helper.axes()
camera.position.set(-1, 1, 1)
create.ambientLight()
create.directionalLight()
create.torus({ tube: 0.3 })
animate()
トーラス結び目を表示するには、create.torusKnot()
を使います。
トーラス結び目は、トーラスを結び目状にした形状です。
tube
に数値を指定することで、トーラス結び目の太さを調整できます。
const { camera, create, animate, controls, helper } = init();
controls.connect()
helper.grid()
helper.axes()
camera.position.set(-1, 1, 1)
create.ambientLight()
create.directionalLight()
create.torusKnot({ tube: 0.3 })
animate()