3DGS の出現アニメーションと消失アニメーション
概要
読み込みアニメーションは LCC データの読み込み時に再生される。エディターでは Refresh ボタンをクリックして再読み込みをトリガーし、アニメーションをプレビューできる。

Refresh ボタンをクリックして読み込みアニメーションをプレビューする
- 3DGS モード:2 段階のアニメーション(なし→点群→3DGS)

3DGS の読み込みアニメーションは点群から 3DGS へ遷移する

3DGS の 2 段階読み込みアニメーションのデモ
- 点群モード:1 段階のアニメーション(なし→点群)

点群モードの 1 段階の読み込みアニメーション

点群モードの読み込みアニメーションのデモ
パラメーター
制御用のパラメーターは LCCComponent の Animation カテゴリーにある。

Animation カテゴリーで読み込みアニメーションのパラメーターを設定する
| パラメーター | 既定値 | 説明 |
|---|---|---|
| bEnableAnimation | false | 読み込みアニメーションを有効にする |
| AnimationSpeed | 100 | アニメーションの速度 |
| AnimationMinScale | 0.001 | 第 1 段階の点群のサイズ(3DGS モードのみ) |
| FirstStageDelay | 0 | 第 1 段階の遅延(秒)。開始前はデータが表示されない |
| SecondStageDelay | - | 第 2 段階の遅延(点群→3DGS)。FirstStageDelay と等しい場合は第 1 段階をスキップする |
| EnvironmentDelay | - | 環境ノードの遅延。環境はアニメーションに参加せず、時間になると直接表示される |
| AnimationOriginOffset | (0,0,0) | 走査の開始点のオフセット |
| FirstStageColor | ゴールド | 第 1 段階の走査線のカラー(不透明度を 0 にすると走査線を隠す) |
| SecondStageColor | - | 第 2 段階の走査線のカラー |
| ScanLineThickness | 5 | 走査線の幅 |
逆再生アニメーション
逆再生アニメーションを有効にすると、アニメーションが遠くから中心へ収縮して消えていく。

Animation カテゴリーで逆再生アニメーションのパラメーターを設定する
| パラメーター | 既定値 | 説明 |
|---|---|---|
| Inverse Animation | false | 逆再生アニメーションを有効にする。有効にすると、アニメーションが遠くから中心へ収縮して消えていく |
| Inverse Max Range Time | 30 | 逆再生アニメーションの初期の可視範囲を設定する。数値はシーン全体を覆う必要がある |

3DGS の 2 段階逆再生アニメーションのデモ

点群モードの逆再生アニメーションのデモ
実行時にアニメーションを制御する
Details パネルで設定するほかに、実行時にコードや Blueprint からアニメーションを制御することもできる。
アニメーションを再生し直す
SetEnableAnimation はアニメーションのオン / オフに加えて、アニメーションの計時の起点を現在の時刻にリセットする。したがって読み込みの段階に限らず、どのタイミングで呼んでもアニメーションが最初から再生される。
// 読み込み済みのシーンでアニメーションをもう一度再生する。データの再読み込みは不要
Component->SetEnableAnimation(true);
対応する Blueprint ノードは Set Enable Animation である。
パラメーターとスイッチの順序
アニメーションは再生が始まると、その時点のパラメーターに従って進む。パラメーターは再生開始後も変更でき、変更は次のフレームで反映されるが、それは途中での調整にあたり、アニメーションが最初からやり直されることはない。
したがってパラメーターをアニメーション全体に完全に効かせたい場合は、先にパラメーターを設定し、最後に SetEnableAnimation を呼ぶ。
// 先にパラメーターを設定する
Component->AnimationSpeed = 30.0f;
Component->AnimationMinScale = 0.1f;
Component->SecondStageDelay = 1.0f;
Component->bUseFirstStageColor = true;
Component->FirstStageColor = FLinearColor(0.f, 0.8f, 1.f, 1.f);
// 最後にスイッチをオンにする。この瞬間から上記のパラメーターでアニメーションが始まる
Component->SetEnableAnimation(true);
再生中にパラメーターを変更する必要が実際にある場合(リアルタイムに速度を変えるなど)は、プロパティを直接変更すればよく、SetEnableAnimation を呼び直す必要はない。逆に、再生中に SetEnableAnimation(true) を呼ぶとアニメーションが最初から始まるため、通常のモードでは重複した呼び出しを避ける。
消失アニメーションを再生する
bInverseAnimation を true にしてから、SetEnableAnimation(true) を呼んでタイムラインをリセットする。
// 消失
Component->bInverseAnimation = true;
Component->SetEnableAnimation(true);
// 再び出現
Component->bInverseAnimation = false; // 戻すのを忘れない
Component->SetEnableAnimation(true);
テキスト形式の Blueprint:
[Custom Event: PlayDisappear]
│
▼
[Set Inverse Animation]
Target = (LCC Component)
bInverse Animation = true
│
▼
[Set Enable Animation]
Target = (LCC Component)
b In Enable Animation = true
実践のポイント
bInverseAnimationはSetEnableAnimationより先に設定しておく。 順序が逆になると、方向が切り替わる前にタイムラインがリセットされ、古い方向で 1 回再生されてしまう。- 出現アニメーションが再生し終わるたびに
bInverseAnimationをfalseに戻す。 そうしないと同じオブジェクトを次に使うときに逆再生モードのままになる。 InverseMaxRangeTimeの既定値 30 秒は素早いインタラクションには大きいので、小さくする必要がある。 この値にAnimationSpeedを掛けた結果が初期の可視半径になる。シーン全体を覆うだけの大きさが必要だが、大きすぎると消失の過程がもたつく。- 通常のモードでは
SetEnableAnimation(true)を重複して呼ばないよう注意する。 呼ぶたびにタイムラインがリセットされ、アニメーションが繰り返し最初から始まる。