SceneのSkyboxを変更する際は、 setSkybox() を使用します
[参考] https://developer.playcanvas.com/api/pc.Scene.html#setSkybox
実装例としてコードが以下になります。
Attributeで変更したいCubeMapをAssetsから選択し、Scriptを追加したElement ComponentのBottonをクリックしたらSkyboxが変わると言ったScriptです。
var ChageSkybox = pc.createScript('chageSkybox');
ChageSkybox.attributes.add("skybox", { type: "asset", assetType: "cubemap" });
ChageSkybox.prototype.initialize = function() {
let self = this;
self.skybox.loadFaces = true;
self.app.assets.load(self.skybox);
self.entity.element.on("click", () => {
self.changeSkybox();
});
};
ChageSkybox.prototype.changeSkybox = function() {
this.app.scene.setSkybox(this.skybox.resources);
};
それに伴い、3DモデルごとのMaterialにCubeMapが反射しますが、これがCubeMapを変えても正しく反映されないことがあります。
これはCubeMapのPrefilteringの設定を行うことで解決できます。
AssetのCubeMapのInspectorにPREFILTERINGの項目があります。
このPREFILTER CUBEMAPをクリックすることでMaterial自体の反射のCubeMapも正しく反映されます。
コメント
0件のコメント
サインインしてコメントを残してください。