【ベータ機能】クリックする度にランダムにマテリアルの色が変わるクラフトアイテムをつくる──マテリアルプロパティ操作 APIを使う

本記事はCluster Creator Kitの「ベータ機能」を利用した解説になります。
ベータ機能では正式リリース前の機能を使うことができます。正式リリース前のため、不安定な挙動をしたり将来的に挙動が変わる可能性があります。また、記事公開時点ではベータ機能として紹介していますが、その後正式リリースされている場合もありますので、本記事を参考にする場合はまずスクリプトレファレンスを参照することをおすすめします。

利用にはCluster Creator Kitでベータ機能を設定した状態でアップロードを行う必要があります。ワールドクラフトで利用する場合は、ワールドクラフトのワールドを新規作成する際にベータ機能の設定を行う必要があります。設定方法はこちらをご覧ください。

Cluster Creator Kit v2.9.0からベータ機能として「マテリアルプロパティ操作 API」が使えるようになりました。
このAPIを使うと、マテリアルのプロパティを操作することができます。例えば、マテリアルの色を変えたり、シェーダーと組み合わせると頂点を動かして波のような表現をつくることもできます。

マテリアルプロパティ操作 APIは、クラフトアイテムでは baseColor と emission、Cluster Creator Kit 製のワールドではそれ以外のシェーダーで公開されているプロパティの値が設定できます。
今回は基本的な例として「クリックする度にランダムにマテリアルの色が変わるクラフトアイテムをつくる」のつくり方とサンプルコードを紹介します。

マテリアルを操作したいオブジェクトにItemMaterialSetList コンポーネントを設定する

マテリアルプロパティ操作 APIを使用するためには、 ItemMaterialSetList コンポーネントを設定する必要があります。

Scriptable Itemがついたオブジェクトにつけるかその子のオブジェクトにつけてSubNodeで指定してください。ItemMaterialSetList に設定する際に ID として指定した文字列が、スクリプトでマテリアルを取得するための文字列となります。

「クリックする度にランダムにマテリアルの色が変わるクラフトアイテムをつくる」のサンプルコード

ClusterScript に新たに追加された material という API を実行することによって、操作対象のマテリアルの MaterialHandleを取得できます。
今回は基本的な使い方として「クリックする度にランダムにマテリアルの色が変わるクラフトアイテムをつくる」の例とサンプルコードを掲載します。

$.onInteract(() => {
  const mat = $.material("base");
  mat.setBaseColor(Math.random(), Math.random(), Math.random(), 1);
});

クラフトアイテムでは、setEmissionColor を使ってEmission(光の強さ)を変えることもできます。Cluster Creator Kitであれば他のプロパティも操作できるので、ぜひ MaterialHandle のスクリプトリファレンスを見てみてください。

今回は紹介しませんが、シェーダーと組み合わせることで波のような表現がつくれたり、アイデア次第で色々な表現をつくることができます。興味ある方はぜひ触ってみてください。

記事をシェアしてワールド制作を盛り上げよう!

Cluster Creators Guide|バーチャル空間での創作を学ぶならをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む