夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Unityで調整可能なビルボードを作る

本日はUnity枠です。

初級編にはなりますが、久しぶりにUntiyを触って忘れてしまっていたところもあるでサイド勉強していきます。

Billboardとは?

ビルボードは通常板ポリゴンのような平面オブジェクトに使用され、その向きが常にカメラ(ユーザー)を向くようにする処理を指します。

 これは背景やエフェクトなどでよく使用されるテクニックで、大量のポリゴンを配置せずに立体的な見た目に見せることができます。

 これはパフォーマンスに影響する機能で、現在よりもスペックが低かった初期のゲームから積極的に採用されていました。

 一例をあげるとスーパーマリオ64ボム兵は胴体部がビルボードで表現されていたと聞きます。

 基本的に絵を常にカメラに向けるように動かすので、線対称、点対称なオブジェクトに向いており、逆に複雑なオブジェクトは不自然さが目立ってしまうので不向きと呼べます。

〇コード

今回は次のようなコードを書きました。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Billboard : MonoBehaviour
{
    [SerializeField]
    private Vector3 rotationBias;
    
    void Update()
    {
        transform.LookAt(Camera.main.transform , Vector3.down);
        transform.Rotate(rotationBias);
    }
}

これはアタッチしたオブジェクトがUpdate関数で常にカメラを向くようにしています。

Transform.LookAt()は対象のオブジェクトを第一引数のオブジェクト(Transform)へ向ける処理を指します。

しかしこのままではローカル座標の回転率次第では常に変な方向を向くなどの現象が起こります。

そこでrotationBiasという変数を作成しtransform.Rotate()で回転処理を行いました。

これによってインスペクターウィンドウのプロパティ上にVector3型でパラメータが表示され、ここで指定した角度分バイアスが加わります。

以上で調整可能なビルボードができました。

本日は以上です。