PlayCanvas v1.26.0アップデート内容


PlayCanvas v1.26.0アップデート内容

[NEW] glTF 2.0 support
[NEW] WebXR AR hit test support (@Maksims)
[NEW] Particle system randomized sprite animations + example
[NEW] Add support for ES6 script classes (@aidinabedi)
[NEW] Add pc.drawTexture to render a texture to a target using a shader (@aidinabedi)
[NEW] Integration with SpectorJS markers
[FIX] Correctly update particle system local bounds
[FIX] Optimize grab-pass under WebGL 2 and fix when using anti-aliased render target (@aidinabedi)
[FIX] Mouse wheel events on element components
[FIX] Recompile Basis with latest Emscripten to fix IE11
[FIX] WebXR: Avoid using deprecated vec3.data internally (@Maksims)
[DOCS] Document drawQuadWithShader and copyRenderTarget (@aidinabedi)
[DOCS] Fix pc.ModelComponent#type docs (@mast4461)

3月24日にPlayCanvasのアップデートがありました。
1.26.0ということで多くの変更点があります。
大きく変わった点として、glTF 2.0ES6のclass構文に対応しました。
他にも複数のバグ修正や、Exampleの拡充、新機能が加わりました。

新機能

ES6のclass構文対応

[NEW] Add support for ES6 script classes
ES6のclass構文に対応するpc.registerScriptがこちらのプルリクエストで、PlayCanvasエンジンに組み込まれました。

ES5 example

こちらがv1.25までのPlayCanvasでのスクリプトの書き方となります。

var CameraController = pc.createScript('CameraController');

CameraController.attributes.add('myAttrib', { type: 'boolean', default: false });

CameraController.prototype.initialize = function() {
    // initialize code called once per entity 
};

CameraController.prototype.update = function(dt) {
    // update code called every frame
};

ES6 example

v1.26.0からはpc.registerScriptを使用してclass構文でPlayCanvasのスクリプトの定義をできるようになりました。

class CameraController extends pc.ScriptType {

    initialize() {
        // initialize code called once per entity 
    }

    update(dt) {
        // update code called every frame
    }
}

CameraController.attributes.add('attribute', { type: 'boolean', default: false });

pc.registerScript(CameraController);

こちらは現在Engineのみでのサポートとなっておりエディタでの使用はまだできません
※ 現在はエディタ対応済みです
https://github.com/playcanvas/engine/issues/1934

glTF2.0対応

glTF2.0の読み込みにエンジン本体で対応をしました。

今まではglTFを読み込む際には、別のライブラリを事前にplaycanvas-gltfを読み込む必要がありましたが今回のアップデートでエンジン本体でglTFを使えるようになりました。

glTF 2.0 support
https://github.com/playcanvas/engine/pull/1904

使ってみる

まだ(※3月31日現在)
エディタはgltfのファイル形式のアップロードには対応をしていないのでエンジンから使用します。

  1. リポジトリをクローン
git clone [email protected]:playcanvas/engine.git
  1. engineのリポジトリへ移動 bash cd engine
  2. PlayCanvasをビルド
npm install
npm build
  1. Glb Viewerを起動

デフォルトの設定の場合、127.0.0.1:8080にサーバーが立ち上がります。

npx http-server
  1. ローカルのGlb Viewerへアクセス

  1. Glbファイルをドラックアンドドロップアップロード

今回は.vrmの拡張子のファイルを.glbに変換して読み込ませています。

他のライブラリなしでGlbのファイルを読み込めるようになりました

追加されたexamples

いくつかの使用例が追加されています。

追記

v1.26.1

[NEW] Anisotropic specular and reflection approximation using GGX distribution and bent normals + example
[NEW] Model outline post effect example
[NEW] Allow pc.AnimController to support any target
[NEW] Add pc.ScriptComponent#get (allows TS developers to get scripts from script components in a type safe way)
[NEW] Add pc.Application#fillMode and pc.Application#resolutionMode getters
[NEW] Make pc.Application#loadScene public
[NEW] Make pc.BoundingBox methods: copy, clone, setMinMax and compute public
[DOCS] Fix incorrect naming syntax for pc.ScriptType.attributes
[FIX] Fix parsing of ES6 scripts
[FIX] Include urlBase when loading unpacked glTF
[FIX] Simplify pc.Light#mask and pc.Light#enabled code


PlayCanvas開発で参考になりそうな記事の一覧です。


入門


その他関連
- PlayCanvasタグの付いた記事一覧

PlayCanvasのユーザー会のSlackを作りました!

少しでも興味がありましたら、ユーザー同士で解決・PlayCanvasを推進するためのSlackを作りましたので、もしよろしければご参加ください!

日本PlayCanvasユーザー会 - Slack