2
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?

More than 5 years have passed since last update.

Three.js でCOLLADA(.dae) を読み込み、モデルに紐づいた頂点カラーをシェーダで使用する。

Last updated at Posted at 2019-07-04

daeのファイル名はcube.daeで、./model/に配置。

var loader = new THREE.ColladaLoader();
loader.load('./model/cube.dae', function(data)
{
    data.scene.traverse(function(obj)
    {
        if(obj instanceof THREE.Mesh === true)
        {
            var mesh = obj;
            mesh.material = new THREE.ShaderMaterial({
                vertexShader: document.getElementById('vertexShader').textContent,
                vertexColors: THREE.VertexColors,
                fragmentShader: document.getElementById('fragmentShader').textContent
            });
            // あらかじめ生成したsceneにadd
            scene.add(mesh);
        }
    }); 
});

data.sceneは、THREE.Scene。daeではカメラなどを含んだシーンまるごとがデータのため、Sceneの子要素からモデルを抽出している。.traverseは、THREE.Sceneの子要素を取り出す関数。

ローダーは、three.jsの本体には入っていないので、別途読み込む必要がある。

<script src="js/loaders/ColladaLoader.js"></script>

ShaderMaterialで頂点カラーを使いたいときは、vertexColors: THREE.VertexColors を指定。Vertex Shader上では、attribute vec3 colorで渡される。

頂点カラーの情報をモデルにもたせて使いたい場合、daeが何かとやりやすいのでないかなと。fbxは何かとつらい。

2
2
0

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
2
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?