360度見回す君とそのコード
ネーミングどおりの,ビュワー内を上下左右,ぐるぐる回って全球を見回すようにフライするーカメラを制御するスクリプトを書きました。USO800鉄道総裁によると,動画で撮影してツールに引っ掛けるとエクイレクタングラー形式の画像に加工ができてバーチャルキャスト用の背景にできるそうです。何じゃそりゃ。
で,そうすると何ができるのか,というと,そのUSO800鉄道総裁(のアバター)がVRMビュワー(から生成されたまた別の空間)をのそのそ動くんだそうです。
VRM NXの登場も近づいてきている中,このようなVR・AR系技術との融合も期待が高まります。
ちなみにUSO800鉄道総裁のアバター,雰囲気結構似てます笑
スクリプト全文は以下のようです。レイアウトスクリプトにコピペしてください。
// カメラ座標を管理する変数
Var CamPos
Var CamTheta
Var CamPhi
Var pi
pi pi
Var pi2
mov pi2 pi
mul pi2 2.0
Var FlgStopOver
Var FlgDown
Var FlgStopAll
// イベントハンドラ
Var EidCamStart
Var EidCamFrame
SetEventKey this MtdCamStart EidCamStart 0
BeginFunc MtdCamStart
Var vecat
GetFlyCameraOFFSET CamPos vecat
setf CamTheta 0.0
setf CamPhi 0.0
call this MtdCamPosCalc
SetEventAfter this MtdCamRound EidCamFrame 1500
EndFunc
BeginFunc MtdCamStop
setf CamTheta 0.0
setf CamPhi 0.0
call this MtdCamPosCalc
EndFunc
BeginFunc MtdCamRound
call this MtdCamPosCalc
add CamTheta 0.02
if> CamTheta pi2
if FlgStopAll
SetEventAfter this MtdCamStop EidCamFrame 3000
return
endif
ifzero FlgDown
SetEventAfter this MtdCamOver EidCamFrame 100
else
SetEventAfter this MtdCamDown EidCamFrame 100
endif
sub CamTheta pi2
else
SetEventAfter this MtdCamRound EidCamFrame 10
endif
EndFunc
BeginFunc MtdCamOver
Var tmp
call this MtdCamPosCalc
add CamPhi 0.008
if> CamPhi 1.56
// 真上まで来ちゃったら一周する例外処理
set FlgDown 1
SetEventAfter this MtdCamRound EidCamFrame 100
return
endif
mov tmp CamPhi
mul tmp 18
cos tmp tmp
if> tmp 0.0
if FlgStopOver
SetEventAfter this MtdCamRound EidCamFrame 100
set FlgStopOver 0
return
endif
else
set FlgStopOver 1
endif
SetEventAfter this MtdCamOver EidCamFrame 10
EndFunc
BeginFunc MtdCamPosCalc
Var vecd
SetVectorZero vecd
Var tmp
cos tmp CamTheta
SetVectorX vecd tmp
sin tmp CamTheta
SetVectorZ vecd tmp
tan tmp CamPhi
SetVectorY vecd tmp
DrawVar CamTheta
DrawVar vecd
VectorAdd vecd CamPos
SetFlyCameraPos CamPos vecd
EndFunc
BeginFunc MtdCamDown
Var tmp
call this MtdCamPosCalc
sub CamPhi 0.008
// 上向きから水平まで降りてくるための例外処理
if> CamPhi 0.0
SetEventAfter this MtdCamDown EidCamFrame 10
return
endif
// 真下まで来たときの例外処理
if< CamPhi -1.56
set FlgStopAll 1
SetEventAfter this MtdCamRound EidCamFrame 100
return
endif
mov tmp CamPhi
mul tmp 18
cos tmp tmp
if> tmp 0.0
if FlgStopOver
SetEventAfter this MtdCamRound EidCamFrame 100
set FlgStopOver 0
return
endif
else
set FlgStopOver 1
endif
SetEventAfter this MtdCamDown EidCamFrame 10
EndFunc
フライするーカメラでお好きなところに移動したら,「0」キーを押してください。その場で,360度見回しが始まります。ぜんぶ終わるまでには90秒程かかります。
| 固定リンク
「日記・コラム・つぶやき」カテゴリの記事
- 顕在化してくれないミドル層VRMユーザー #VRMアンケート2019(2019.12.04)
- 最近のVRMの新製品の動向もまあまあ妥当かも,という件 #VRMアンケート2019(2019.11.17)
- オフ会後1週間。 #VRMOFF2019(2019.11.16)
- #VRMOFF2019 まであと1ヶ月。(2019.10.10)
- 自作車両PJ第2弾 スタート(2019.09.12)
この記事へのコメントは終了しました。
コメント