HMD動作環境の作り方

module/usbhmdをmakeする。

source/main/ioppak.ilsに、以下の行を追加.

 #ifdef USBFS
 $(SYSPATH)/usbd.irx dev=5 gtd=8 itd=3 ioreq=128 conf=256 hub=1 port=4
 $(USRPATH)/usbfs.irx
 $(USRPATH)/usbkbd.irx
+$(USRPATH)/usbhmd.irx
 #endif

 #ifdef NOUSBFS
 $(SYSPATH)/usbd.irx dev=5 gtd=8 itd=3 ioreq=128 conf=256 hub=1 port=4
 $(USRPATH)/usbkbd.irx
+$(USRPATH)/usbhmd.irx
 #endif

サンプルソースは、

#include "usbhmd.h"


	{
		USBHMD_DATA hmd;
		SVECTOR rot;
		FVECTOR pt;
		float angle;

		FMATRIX		mat, mat2, m ;
		DG_MakeCameraMatrix( &mat, &pos, &trg );

		usbhmd_read( &hmd );
		rot.vx = hmd.pitch * 2048.0F / 0x8000;
		rot.vy = - hmd.yaw * 2048.0F / 0x8000;
		rot.vz = 0.0F;
		DG_SetPos2( &DG_ZeroVector, &rot );
		DG_GetPos( &m );

		_sceVu0MulMatrix( &mat, &mat, &m );

		pos.vw = pos.vw + hmd.roll * M_PI / 0x8000;
//		pos.vw = 0.0F;
		/*
			カメラ逆行列を計算する
		*/
		_sceVu0InversMatrix( &mat2, &mat );

		/* Ｚ回転 */
		_sceVu0RotMatrixZ( &mat2, &mat2, pos.vw ) ;
		_sceVu0InversMatrix( &mat, &mat2 ) ;
		/* カメラ設定 */
		DG_SetCamera( DG_Chanls + i, &mat, cam->angle );
	}

game/camerad.c に埋め込んだ時はこんな感じ。
現状、イニシャライズ等は必要ありません。
コードは #ifdef USE_HMD で囲んで下さい。

makefile.defで、PS2の時だけ、USE_HMDを-Dするようにして下さい。
(ローカルのみでOK）






