PlayCanvasのマテリアルシステム大幅アップデート:シェーダーからシェーディングモデルへの進化

こんにちは、チャリセです!
今回はPlaycanvasのシステムのアップデートについて紹介します。
PlayCanvasはshaderプロパティをshadingModelに置き換える更新を行いました。以下に画像レンダリングコードの更新方法を説明します:
以前のシステム(変更後)
// 古いバージョン
material.shader = 'blinn'; // または 'phong'
material.useLighting = false;
material.update();
以前はshaderプロパティで’blinn’か’phong’を直接指定し、useLightingでライティングのオン/オフを制御していました。シンプルですが、柔軟性に欠ける実装でした。
新システム(変更後)
FetchImage.prototype.applyPreloadedImage = function (image) {
if (!this.entity.render) return;
this.texture = new pc.Texture(this.app.graphicsDevice);
this.texture.setSource(image);
// マテリアルのクローンと設定
this.material = this.entity.render.meshInstances[0].material.clone();
this.entity.render.meshInstances[0].material = this.material;
// 新しいシェーディングモデルの活用
this.material.shadingModel = pc.SPECULAR_BLINN;
this.material.diffuse = new pc.Color(0, 0, 0);
this.material.emissiveMap = this.texture;
this.material.opacityMap = this.texture;
this.material.emissiveIntensity = 1;
this.material.emissive = new pc.Color(1, 1, 1);
this.material.useSkybox = false;
this.material.update();
this.imageLoaded = true;
};
➤ 主な改善点と利点
◆ シェーディングの柔軟性向上
・旧:shaderで単純に2種類から選択
・新:shadingModelでより詳細な制御が可能ライティング制御の進化
◆ ライティング制御の進化
・旧:useLighting = falseの単純なオン/オフ
・新:emissiveIntensityとemissiveカラーで細かな調整が可能
◆ テクスチャマッピングの強化
・旧:基本的なマッピングのみ
・新:emissiveMapとopacityMapで高度な表現が可能
◆ パフォーマンスと安全性
・マテリアルのクローンによる他オブジェクトへの影響防止
・より効率的なメモリ使用と処理
◆ 実装時の注意点
・必ずmaterial.update()を呼び出す
・シェーディングモデルの選択は目的に応じて適切に行う
・マテリアルのクローンは必須(副作用防止)
このアップデートにより、より柔軟で強力なマテリアル表現が可能になりました。特にゲーム開発やインタラクティブコンテンツの制作において、表現の幅が大きく広がったと言えます。
是非アテリアル周りでエラーが出たらお試しください! Happy Coding!!
現在
株式会社チョモランマ
株式会社シェルパ
3Dmodeljapan株式会社
ではスタッフを大募集しております!!
Unreal Engine4、AI、プログラミングや建築パースに興味がある方!
ぜひご応募下さい!!
初心者の方、未経験の方やインターンを受けてみたい方々でも大歓迎です!!