HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1016
夢旅人サイドバイサイドの3D表示の作り方2解決


夢旅人

リンク

2012/10/16(Tue) 15:30:40|NO.50024

HSPを使いヘッドマウンテッドディスプレイに表示させるための
サイドバイサイドの3D表示を行いたいです。
一画面を左右分割して、左側には左目で見た映像を右側には右側のを
それぞれの映像の縦横比の横方向を半分に圧縮して表示させたいのです。

これまでEasy3DやHGIMG3を使って試みましたが、
Easy3Dではカメラの縦横比が変えられず、
HGIMG3では左右別々に表示ができずに頓挫しました。

どうにか解決するアドバイスを頂けないでしょうか?
よろしくお願いします。



この記事に返信する


暇人

リンク

2012/10/16(Tue) 20:10:00|NO.50027

>HGIMG3では左右別々に表示ができずに頓挫しました。
多分
>2007/02/07 ( Ver3.1β7 )
> ビューポートを設定するためのhgview命令を追加。
> hgdraw命令のオプションパラメーターを追加。
これで出来るようになった(まだhgviewが不完全みたいだけど)

とりあえず左右に別のカメラ座標での表示サンプル

#include "hgimg3.as" fullscr=1 ; フルスクリーンか? (1=yes/0=no) _dispx=1280:_dispy=720 ; 画面サイズ(HMZ-T1の解像度に会わせてみた) ; randomize if fullscr=0 { screen 0,_dispx,_dispy,0 } else { bgscr 0,_dispx,_dispy,0 hgsetreq SYSREQ_DXMODE,1 ; フルスクリーンモードを指定 hgsetreq SYSREQ_DXWIDTH,_dispx ; フルスクリーン解像度X hgsetreq SYSREQ_DXHEIGHT,_dispy ; フルスクリーン解像度Y } cls 4 hgini if fullscr { wait 100 mouse -1 gsel 0,2 } setfont 16,16,12,1 ; font Tex select(cx,cy,px,mode) texload "fontchr.bmp" ; フォントテクスチャの登録 addxfile m_xmodel,"font_a.x" ; モデルを読み込む ; max=5 dim obj,max repeat max regobj obj.cnt, m_xmodel ; オブジェクトの登録 setpos obj.cnt, cnt*8-16, 0, cnt*10-limit((cnt-2),0,max)*20 loop ; addbox amid,1.0,1.0 regobj aoid,amid setdir HGOBJ_LIGHT, 0, 64, 0 ; 標準ライトのアンビエント ; reglight exlight ; 追加のライト setscale exlight, 255, 0, 0 ; ライト色を設定 setdir exlight, 0, 64, 0 ; アンビエント色を設定 ; clscolor $50 ; 背景色の設定 ; a=1 cammode CAM_MODE_LOOKAT ; カメラ注視モード ax=0.0 ay=0.0 az=0.0 selcint objsetf3 ax, ay, az ; 注視先 cx=0.0 cy=-10.0 cz=50.0 eyes=1.0 gosub *set_all *main stick key,64 if key&128 : goto *owari if (key&64)=0 { eyes=limitf(eyes+0.0005*mousew,0,100) //マウスホイールで目の間隔を調整(↑で広く、↓で狭く) }else{// Ctrl az=limitf(az-0.005*mousew,-200,40) //Ctrl+マウスホイールで注視先の距離を調整(↑で遠く、↓で近く) selcint objsetf3 ax, ay, az ; 注視先 } setpos aoid,ax, ay, az ; 注視先を示すオブジェクト selcpos ;カメラ位置選択 objsetf3 cx-eyes, cy, cz ; 左目カメラ座標 hgview 0,0,_dispx/2,_dispy ; 左目描画領域 hgdraw 1 ; 左画面描画 fprt "eyes:"+(eyes*2),8,8 ; 目と目の間隔(左画面) fprt "az:"+(az),8,8+16 ; 注視先Z座標(左画面) selcpos ;カメラ位置選択 objsetf3 cx+eyes, cy, cz ; 右目カメラ座標 hgview _dispx/2,0,_dispx/2,_dispy ; 右目描画領域 hgdraw 1 ; 右画面描画 fprt "eyes:"+(eyes*2),8+_dispx/2,8 ; 目と目の間隔(右画面) fprt "az:"+(az),8+_dispx/2,8+16 ; 注視先Z座標(右画面) hgsync 10 ; 時間待ち ; 回転、特別なライトに変えるオブジェクト選択 if key&4 : a=limit(a+1,0,max-1) : gosub *set_all if key&1 : a=limit(a-1,0,max-1) : gosub *set_all ; モデルを回転させる addang obj.a, 0, 0.05, 0 goto *main *set_all ; 変数aのオブジェクトを特別なライトに repeat max if cnt=a : objlight obj.cnt, exlight : else : objlight obj.cnt, HGOBJ_LIGHT loop return *owari end
フルスクリーン指定してるので注意
ESCで終了



夢旅人

リンク

2012/10/16(Tue) 21:02:55|NO.50030

早速のアドバイスありがとうございます。
サンプルスクリプトまで頂いて、大変勉強になります。

ひとまず3Dでモデルを鑑賞する目的は達成できそうです。
ありがとうございました。
精進します。



ONION software Copyright 1997-2023(c) All rights reserved.