MocuMocuDance Ver.0.80公開しました。
今回の更新内容は、以下の通りです。
- 疑似AR表示機能に過去の画像をキャッシュして表示するモードを追加しました。
- PMXファイルにQDEFのデータがあると読み込みに失敗する問題を修正しました。
// プロジェクションのスケールを取得する
static Vector2 GetProjectionScale(SteamVR_TrackedCamera.VideoStreamTexture source)
{
Valve.VR.CVRTrackedCamera trackedCamera = Valve.VR.OpenVR.TrackedCamera;
if (trackedCamera == null) return Vector2.one;
// スケール値を取得するだけなので、Near/Farの値は何でも構わない
const float Near = 1.0f;
const float Far = 100.0f;
Valve.VR.HmdMatrix44_t ProjectionMatrix = new Valve.VR.HmdMatrix44_t();
if (trackedCamera.GetCameraProjection(source.deviceIndex, source.frameType, Near, Far, ref ProjectionMatrix) !=
Valve.VR.EVRTrackedCameraError.None)
{
return Vector2.one;
}
return new Vector2(ProjectionMatrix.m0, ProjectionMatrix.m5);
}
target.localScale = new Vector3(1, 1.0f / aspect, 1);
// Apply the pose that this frame was recorded at.
if (source.hasTracking)
{
var t = source.transform;
target.localPosition = t.pos;
target.localRotation = t.rot;
}
// Apply the pose that this frame was recorded at.
if (source.hasTracking)
{
const float ProjectionZ = 1.0f;
Vector2 ProjectionScale = GetProjectionScale(source);
Vector2 LocalScale = new Vector2(2.0f * ProjectionZ / ProjectionScale.x, 2.0f * ProjectionZ / ProjectionScale.y);
target.localScale = new Vector3(LocalScale.x, LocalScale.y, 1.0f);
//
var t = source.transform;
target.localPosition = t.TransformPoint(new Vector3(0.0f, 0.0f, ProjectionZ));
target.localRotation = t.rot;
}
Shader "Custom/ARBackground"
Tags { "RenderType"="Opaque" "Queue"="Background" }
Pass
{
ZWrite Off
CGPROGRAM