🌅

【Roblox】ViewportFrameについて

2024/11/25に公開

はじめに

今回はViewportFrameを紹介しようと思います。

Robloxバージョン:0.638.1.6380615

ViewportFrameとは

ViewportFrameとは3Dオブジェクトを2DオブジェクトとしてレンダリングすることができるGuiObjectです。

使用上の注意点として、影やポストプロセスはレンダリングされません。
またマテリアルのEnum.Material.NeonおよびEnum.Material.Glassは最低品質でレンダリングされます。
上記注意点もありますが、3Dオブジェクトを2Dで表現したい場合は多いので非常に役に立ちます。

主に設定するプロパティの値

  • Ambient:ViewportFrame内の照明の色を設定できる。
  • LightColor:放射される光の色を設定できる。
  • CurrentCamera:子オブジェクトをレンダリングするために使用するカメラ。

使用例

下記のようにViewportFrameの子に2Dオブジェクトとして表示したい3Dオブジェクトを
設定します。

エクスプローラーの配置

ViewportFrameのプロパティのCurrentCameraを設定します。

プロパティ CurrentCameraを設定

一応これで2Dオブジェクトとしてレンダリングすることができます。

ViewportFrameなし ViewportFrameあり

物理演算、Humanoidを設定する場合

実はこのままでは、キャラクターモデルをViewportFrameの子に設定した場合、アニメーションは再生されません。


一緒にアニメーションをしてほしいが...


ViewportFrameの子にするとアニメーションが止まる...

 

上記問題を解決するにはWorldModelインスタンスを使用します。

WorldModel

WorldModelとはViewportFrameの子に設定することで、WorldModelを介してRaycastを使用できるようになるインスタンスです。
また、WorldModelの子にHumanoidキャラクターを設定することで、ジョイントが正しく設定されてHumanoidキャラクターのアニメーションの再生が可能になります。


エクスプローラー内の配置


Humanoidキャラクターのアニメーションが動いた!

ジョイントが正しく設定されるので、ViewportFrame下でもアクセサリーの設定が正しく動作するようになります。
キャラクターの見た目をUIで確認しながら変更するような機能を作成する場合は、
ぜひ使用しましょう!

まとめ

  • 3Dオブジェクトを2Dオブジェクトとして表現したい場合はViewportFrameを使用する。
  • ViewportFrame内でHumanoidキャラクター、またはRaycastを使用したい場合はViewportFrameの子にWorldModelを配置して、その子に3Dオブジェクトを配置する。

3DモデルをUIとして表示したい場合は、ぜひViewportFrameを活用してみてください!!

参考

https://create.roblox.com/docs/reference/engine/classes/ViewportFrame
https://create.roblox.com/docs/reference/engine/classes/WorldModel

ランド・ホー Roblox開発チーム

Discussion