メインコンテンツまでスキップ

マテリアル

マテリアルは 3D グラフィックスの基本です。ライトで照らされたときの 3D オブジェクトの見た目と性質を定義します。

React では useMaterial フックで StandardMaterial インスタンスを扱い、<Render/> に適用します。

import { useMaterial } from '@playcanvas/react/hooks'

export const RedBox = () => {
const material = useMaterial({ diffuse: 'red' });
return (
<Entity>
<Render type="box" material={material} />
</Entity>
)
}

下の例では、useMaterial でマテリアルを作成し Render コンポーネントに適用しています。また EntityonClick を付け、キューブをクリックしたときにマテリアルのプロパティを変えます。

基本プロパティ

フックは StandardMaterial クラスのプロパティに近いオブジェクトを受け取ります。StandardMaterial インスタンスを返すので、<Render/> に適用できます。

import { useMaterial } from '@playcanvas/react/hooks'

function BasicMaterialExample() {
const material = useMaterial({
diffuse: 'blue', // Base color
opacity: 0.7, // Transparency (0-1)
metalness: 0.8, // Metallic property (0-1)
roughness: 0.2, // Surface roughness (0-1)
emissive: 'green', // Emissive color
emissiveIntensity: 0.5 // Emissive strength
})

return <Render type="box" material={material} />
}

テクスチャ

useTexture フックでテクスチャを読み込み、マテリアルと組み合わせられます。異なるテクスチャセットの切り替えや、マテリアルプロパティの調整を試してください。

import { useMaterial } from '@playcanvas/react/hooks'
import { useTexture } from '@playcanvas/react/hooks'

function TexturedMaterialExample() {
const { asset: diffuseMap } = useTexture('diffuse.jpg')
const material = useMaterial({ diffuseMap })

return <Render type="box" material={material} />
}

関連