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

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、プログラミングや建築パースに興味がある方!
ぜひご応募下さい!!
初心者の方、未経験の方やインターンを受けてみたい方々でも大歓迎です!!