元Webデザイナー兼コーダーの備忘録

ウェブデザインやプログラミング、ブログのカスタマイズなどについてアウトプットしています。

 メニュー

» HTML入門のまとめはこちらです。

【Three.js入門】質感:Materials

マテリアルとは、物の質感のことです。物体の表面のつるつるした質感やマットな質感を表現します。質感の指定方法について書きます。

Materialsの基本的な記述

コードの記述例は、以下です。

// ジオメトリを作成
const geometry = new THREE.BoxGeometry(1, 1, 1);
// マテリアルを作成
  const material = new THREE.MeshBasicMaterial( { color: 0x0000ff } );
// メッシュを作成
const cube = new THREE.Mesh(geometry, material);
// シーンにメッシュを追加
scene.add(cube);

MeshBasicMaterial

単純なシェーディング(べた塗り、ワイヤーフレーム)方法でジオメトリを描画するためのマテリアルです。光源の影響を受けません。

// コード例
const material = new THREE.MeshBasicMaterial( { color: 0x0000ff} );

f:id:shiroyuki2020:20220218142438p:plain

MeshNormalMaterial

法線ベクトルをRGBカラーにマップするマテリアルです。法線ベクトルとは3次元では、ある面に対して垂直なベクトルのことです。

// コード例
const material = new THREE.MeshNormalMaterial();

f:id:shiroyuki2020:20220218142440p:plain

MeshLambertMaterial

ハイライトのない鏡面反射光です。光沢がない質感になります。

// コード例
const material = new THREE.MeshLambertMaterial( { color: 0x0000ff } );

f:id:shiroyuki2020:20220218142442p:plain

MeshPhongMaterial

ハイライトがある鏡面反射光です。光沢がある質感になります。

// コード例
const material = new THREE.MeshPhongMaterial( { color: 0x0000ff } );

f:id:shiroyuki2020:20220218142526p:plain

MeshToonMaterial

トゥーンシェーディングを実装するマテリアルです。アニメの塗りのようになります。

// コード例
const material = new THREE.MeshToonMaterial( { color: 0x0000ff } );

f:id:shiroyuki2020:20220218142550p:plain

MeshStandardMaterial

標準的な物理ベースのマテリアルです。

// コード例
const material = new THREE.MeshStandardMaterial( { color: 0x0000ff } );

f:id:shiroyuki2020:20220218142553p:plain

MeshDepthMaterial

カメラとの距離で質感を表現します。カメラに近いと白くなり、遠いと黒くなります。

// コード例
const material = new THREE.MeshDepthMaterial();

f:id:shiroyuki2020:20220218142619p:plain f:id:shiroyuki2020:20220218142622p:plain f:id:shiroyuki2020:20220218142624p:plain

まとめ

物体の質感の指定方法について書きました。鉄のような質感にしたい場合や、プラスチックのような質感にしたい場合などがあると思います。どのマテリアルにするかによって、見た目から受ける印象が変わります。

参考サイト

» HTML入門のまとめはこちらです。