トップページ > 記事閲覧
3D11BackBufferTexture2Dの取得に関して
名前:猫の湯飲み 日時: 2023/02/01 20:38

VR機器で描画する際 MakeScreenで左右の目専用のスクリーンを作成して、 SetCameraViewMatrixでカメラを設定した後、MakeScreenで作成したスクリーンに3Dモデルを描画して、VR機器にGetGraphID3D11Texture2Dを使用してID3D11Texture2Dを渡すと 一部のモデルで部分的に透明になったりと正常に描画されません。 しかしPC上に描画されているスクリーンををGetUseDirect3D11BackBufferTexture2Dを使用してVR機器にID3D11Texture2Dを渡すと 3Dモデルは正常に描画されます。 左右で異なる角度からの状態を表示したいためGetGraphID3D11Texture2Dを使用して、VR機器にID3D11Texture2Dを渡すしたいのですが無理でしょうか? もしくは使い方を間違えているのでしょうか?
メンテ

Page: 1 | 2 | 3 | 4 |

Re: 3D11BackBufferTexture2Dの取得に関して ( No.45 )
名前:猫の湯飲み 日時:2023/02/24 21:34

図のレイアウトが崩れてしまったのでこちらにスクリーンショットをあげます。すみません ttps://ibb.co/rddwb7M
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.46 )
名前:管理人 日時:2023/02/25 07:03

アンチエイリアスをお試しいただきありがとうございます 揺れが大きくなったとのことで、益々謎が深まりました… やはり手元で試せないと埒が明かなそうなので、vive pro2 を注文しました 手元に届いてセットアップを行い、頂いたプログラムを実行して、原因が分かりましたら こちらにご報告しますので数日お時間をください m(_ _)m openVR や steamVR の関係についてのご説明もありがとうございます 今回のような例でなければ openXR の方が使い勝手が良さそうですね ( vive用SDKなどを別途用意しなくて良いので )
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.47 )
名前:管理人 日時:2023/02/28 02:16

お待たせしました、vive pro2 が手元に届きました なんとかセットアップを終え( 結局ベースステーションを1台だけPCデスクの上に 置く形態にしました )頂いたプロジェクトを実行してみたのですが、 私の環境では小刻みに震えるという現象は確認できませんでした 小刻みに震えるというのは画面全体が上下左右に震えるのでしょうか? ( カメラが振動しているような… ) それとも画面内の特定の箇所のみに発生する現象なのでしょうか?
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.48 )
名前:猫の湯飲み 日時:2023/02/28 03:39

>小刻みに震えるというのは画面全体が上下左右に震えるのでしょうか? 画面全体が少し揺れ、左右に回転すると上下に揺れが少し強くなる感じです。 また色々な3Dモデルを用意して描画してみたところ部分的に上記の状態が強く出るところがあります。 ------------(ここから下はここ数日で検証したことなどです)------------- windowsをクリーンインストールした状態にsteamVRとvive consoleをインストールしてビルドファイルを実行した場合->あまり変わらない? windows10で実行した場合(普段はwindows11で開発)->あまり変わらない? windowsのゲームモードをoffにして実行した場合->あまり変わらない?(VRの情報取得するタスクの優先順位がさがってしまいカクつくことがあるらしいため、変更してみました。) steamVRをbeta版にして実行->あまり変わらない? openVRのバージョンを下げる->あまり変わらない? コントローラの入力状態をIVRInputに変更する->少し揺れが収まる気がする (HMDの情報についてはIVRInputで定義されている"/user/head/input/pose/raw"のみなので関係ないはず。またIVRInputを使用していないopenVR sampleでも揺れがほぼないのはなぜ?) vive consoleのバージョンを下げる->あまり変わらない (ttps://forum.htc.com/topic/14826-vive-software-20232-%E2%80%93-public-release-notes/ フォーラムでは一部のグラフィックボードではテアリングが発生する報告はあるが、 アプリケーションによって発生する/しないの違いは無いはず。) vive consoleをsteam版に切り替える(htcにあるインストーラー版ではない方)->あまり変わらない (steam版とhtcにあるインストーラー版はファイル内容に違いがある。機能は変わらないはずなので関係ない?グラフィックボードやCPUによって違いがある人もいるとファーラムに報告されている) IVRInput<---Steam VR Input Systemを使用しているIVRInputを使用すると以下のように従来のコントローラーのデータ取得関数が使えなくなるのでHMDのデータ取得にも影響している? 旧式 |<-openVR------------------------>| [device]->[Input Profiles(legacy)]->[System]-------------->App ビット情報 新式 |<-openVR------------------------------------------------------------------>| [device]->[Input Profiles(driver)]->[System]->[Controller bindings]->[Action manifest]-->App 入力プロファイルについての詳細は無く、SteamVRランタイムは非オープンソースのため入力プロファイルの種類は不明。OpenXR規格の手法に類似しているが準拠しているかどうかも不明 (ttps://github.com/ValveSoftware/openvr/wiki/SteamVR-Inputに/user/gamepadと書いてあるのにもかかわらず/user/hand/gamepadでも動作するなど記載されていないものもある) Unityなどのプラグインから InputSource: /user/head /user/hand/left /user/hand/right /user/hand/gamepad Input Profiles: /input/xxx/yyy /input/trigger /input/pose/raw /input/skeleton/left /output/xxx/yyy /output/haptic /pose/xxx は存在するためheadを指定することによってHMDの情報を取得できるはず(公式サンプルはIVRInputを使用しておらず、データ形式が不明のため未検証です。すみません)
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.49 )
名前:管理人 日時:2023/02/28 05:40

ご返答ありがとうございます 様々な検証をされたのですね… すみません、追加でご質問させてください 1.No.30までは小刻みに震えなかったとのことですが、現在でも No.30 までのプログラムでは小刻みに揺れないでしょうか? 2.DXライブラリを使用したVR表示以外の、SteamVR のゲーム作品や体験作品などでは小刻みに揺れる現象は発生しませんでしょうか? 3.不都合が無ければお使いのPCのスペックを教えて頂けますでしょうか? 4.ベースステーションが一つの場合は小刻みに揺れる現象が発生しない、ということはありますでしょうか?
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.50 )
名前:あっぷる 日時:2023/02/28 11:53

本件とは関係あるかわかりませんが、GraphFilterBlt()の5番目の追加パラメータにintを使わずdoubleで渡すと 震えるような意図しない動きになりました 形違いで発生した現象と思われます
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.51 )
名前:猫の湯飲み 日時:2023/02/28 23:28

管理人様-> 1)No.30までは小刻みに震えなかったとのことですが、現在でも No.30 までのプログラムでは小刻みに揺れないでしょうか? はい。震えませんでした。 2)>DXライブラリを使用したVR表示以外の、SteamVR のゲーム作品や体験作品などでは小刻みに揺れる現象は発生しませんでしょうか? unityやUE5などで制作されたVR作品ということでしょうか? 複数作品で確認してみましたが小刻みに揺れる現象は発生しませんでした 以下確認に使用した作品 The Lab Beat Saber Primitier Cooking Similator VR Skyrim VR 3)PCのスペック [システムの要約] 項目 値 OS 名 Microsoft Windows 11 Pro バージョン 10.0.22621 ビルド 22621 システムの種類 x64-ベース PC プロセッサ 12th Gen Intel(R) Core(TM) i7-12700KF、3600 Mhz、12 個のコア、20 個のロジカル プロセッサ 物理メモリ(RAM) 64.0 GB [ディスプレイ] 項目 値 名前 NVIDIA GeForce RTX 3080 専用GPUメモリー 10.0 GB 共有GPUメモリー 31.9 GB ドライバーのバージョン 31.0.15.2802 4)>ベースステーションが一つの場合は小刻みに揺れる現象が発生しない、ということはありますでしょうか? ベースステーションが一つの場合でも二つの場合でも小刻みに揺れる現象が発生します。
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.52 )
名前:管理人 日時:2023/03/02 00:57

ご回答ありがとうございます うーん私の環境では相変わらず揺れずです… 私の環境は以下の通りなのですが OS 名 Microsoft Windows 10 Pro バージョン 122H2 ビルド 19045.2604 システムの種類 x64-ベース PC プロセッサ Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz 3.60 GHz 8コア 8スレッド 物理メモリ(RAM) 64.0 GB 名前 NVIDIA GeForce RTX 2080 専用GPUメモリー 8.0 GB ドライバーのバージョン 516.94 Windows11 ではなく Windows10 なのが関係しているのか、GPUが 2080 なのが関係しているのか… ベースステーションのバージョンも関係しているのかもしれませんが、 猫の湯飲みさんがお使いのベースステーションのバージョンは幾つでしょうか? ( 私はフルセットで購入したので 2.0 となっています ) > あっぷるさん すみません見落としていました、ご情報ありがとうございます 今回テストしているプログラムでは GraphFilterBlt は使用していないので 本件では関係が無さそうです
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.53 )
名前:猫の湯飲み 日時:2023/03/02 23:32

>>猫の湯飲みさんがお使いのベースステーションのバージョンは幾つでしょうか? 2.0です あと本件と関係があるか分かりませんが stage = MV1LoadModel(".\\res\\mmd_batokin_island\\batokin_island5.x"); for( int i = 0; i < MV1GetMeshNum( stage ); i++ ) {   MV1SetMeshBackCulling( stage, i, DX_CULLING_RIGHT ) ; } SetUseRightHandClippingProcess( TRUE ); を設定した場合だと SetCameraPositionAndTarget_UpVecY(VGet(0.0f, 500.0f, 100.0f), VGet(0.0f, 0.0f, 0.0f)); SetCameraScreenCenter(1280, 720); MV1DrawModel(stage); を実行しても正常にウィンドウ(PCモニター側)に正常に描画されないです(カメラから見て垂直になっている部分が欠けている感じです)
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.54 )
名前:管理人 日時:2023/03/03 01:45

ご返答ありがとうございます m(_ _)m > >>猫の湯飲みさんがお使いのベースステーションのバージョンは幾つでしょうか? > 2.0です 使用しているベースステーションのバージョンも同じでしたか… 2月13日に Dxlib_vr を頂いた後の変更を正しく施しているつもりですが、 猫の湯飲みさんのお手元の状態とは違うのかもしれません 何度も申し訳ありませんが、よろしければ現在の最新の Dxlib_vr を頂けないでしょうか m(_ _;m > MV1DrawModel(stage); > を実行しても正常にウィンドウ(PCモニター側)に正常に描画されないです(カメラから見て垂直になっている部分が欠けている感じです) MV1SetMeshBackCulling で DX_CULLING_RIGHT に設定した場合は、DXライブラリの通常の カメラ設定ではそのような見た目になってしまいます( 左手座標系用の射影行列を使用しているので ) VR用のレンダリングを行う際は SetupCamera_ProjectionMatrix で右手座標系用の射影行列を設定しているので 正常に描画されます
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.55 )
名前:管理人 日時:2023/03/05 12:10

Dxlib_vr の最新版のご提供ありがとうございます m(_ _)m 実行してみたところ、最新版でも小刻みに揺れる現象は確認できませんでした… No.42 では『動画だと震えるような感じが伝わりにくい』とのことでしたが、 VR を使い慣れた人ではないと分からないほどの僅かな揺れなのでしょうか?
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.56 )
名前:猫の湯飲み 日時:2023/03/05 23:43

>VR を使い慣れた人ではないと分からないほどの僅かな揺れなのでしょうか? HMDを動かしたときに(頭を左右に振る)その移動方向とは違う方向にも揺れている感じがする(steamで販売しているゲームと比較して)->止まってみて注視すると小刻みに揺れていると認識する感じです。 全体をぱっと見た感じだと気づきづらいかもしれません。
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.57 )
名前:猫の湯飲み 日時:2023/03/06 09:41

//メインウィンドウのカメラを設定する void SetMainCamera(float nearClip, float farClip, VECTOR position, VECTOR target) {  MATRIX mat_projective;//射影行列のアドレス  DxLib::CreatePerspectiveFovMatrixRH(&mat_projective, DEFAULT_FOV, nearClip, farClip);// 射影行列を作成する  DxLib::SetupCamera_ProjectionMatrix(mat_projective);// 射影行列を直接設定する  MATRIX mat_view;// ビューマトリクス  VECTOR vec_up = VGet(0.0f, 1.0f, 0.0f);// カメラの上方向  DxLib::CreateLookAtMatrixRH(&mat_view, &position, &target, &vec_up);  DxLib::SetCameraViewMatrix(mat_view);//ビュー行列を直接設定する } while (DxLib::ScreenFlip() == 0 && DxLib::ProcessMessage() == 0 && DxLib::ClearDrawScreen() == 0)内にある  PutHMD((ID3D11Texture2D*)DxLib::GetGraphID3D11Texture2D(eyeRightScreen), vr::Eye_Right);  PutHMD((ID3D11Texture2D*)DxLib::GetGraphID3D11Texture2D(eyeLeftScreen), vr::Eye_Left); の後に  DxLib::SetCameraScreenCenter(1280, 720);  SetMainCamera(0.1f, 15000.0f, VGet(0.0f, 50.0f, 100.0f), VGet(0.0f, 0.0f, 0.0f));  DxLib::MV1DrawModel(stage); を実行してPC側に描画するようにしたところなぜか小刻みに揺れる現象が発生しなくなりました。
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.58 )
名前:管理人 日時:2023/03/07 01:03

> HMDを動かしたときに(頭を左右に振る)その移動方向とは違う方向にも揺れている感じがする(steamで販売しているゲームと比較して)->止まってみて注視すると小刻みに揺れていると認識する感じです。 > 全体をぱっと見た感じだと気づきづらいかもしれません。 ご返答ありがとうございます 頭を完全に静止させて改めて小刻みに揺れているか目を凝らしてみましたが、私には揺れは分かりませんでした… VIVE pro 2 を何らかの方法で固定した状態で画面を見た場合( VIVE pro 2 をテーブルの上に置いて画面を覗き込むなどの場合 )でも 小刻みに揺れますでしょうか? > while (DxLib::ScreenFlip() == 0 && DxLib::ProcessMessage() == 0 && DxLib::ClearDrawScreen() == 0)内にある >  PutHMD((ID3D11Texture2D*)DxLib::GetGraphID3D11Texture2D(eyeRightScreen), vr::Eye_Right); >  PutHMD((ID3D11Texture2D*)DxLib::GetGraphID3D11Texture2D(eyeLeftScreen), vr::Eye_Left); > の後に >  DxLib::SetCameraScreenCenter(1280, 720); >  SetMainCamera(0.1f, 15000.0f, VGet(0.0f, 50.0f, 100.0f), VGet(0.0f, 0.0f, 0.0f)); >  DxLib::MV1DrawModel(stage); > を実行してPC側に描画するようにしたところなぜか小刻みに揺れる現象が発生しなくなりました。 私の環境ではこちらの変更を加える前も加えた後も小刻みに揺れる現象は確認できていないので違いは分かりませんでしたが、 現象が発生しなくなったとのことで何よりです
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.59 )
名前:猫の湯飲み 日時:2023/03/07 23:58

>VIVE pro 2 を何らかの方法で固定した状態で画面を見た場合( VIVE pro 2 をテーブルの上に置いて画面を覗き込むなどの場合 )でも >小刻みに揺れますでしょうか? 小刻みに揺れます(PC側に描画するようにしていない場合) ここから下は検証記録です----------------- 手持ちのVIVE Pro2を使用してビルドしたソフトウェア(PC側に描画するようにしていない場合)を友人のPCで試してもらったところ 僅かな揺れで、友人も揺れていないわけではないが言われるまで気にならないレベルということでした。 また私が開発で使用しているPC(No.51の構成)で実行したものを友人に試してもらったところ、先ほど(友人のPCで確認時)より揺れが気になるということでした。 --友人のPC構成-- OS 名 Microsoft Windows 11 Pro バージョン 10.0.22621 ビルド 22621 システムの種類 x64-ベース PC プロセッサ Core i9-13900K 物理メモリ(RAM) 32GB NVIDIA GeForce RTX 4080 / 16GB またPC側に描画するようにした場合でもDrawFormatStringやDrawGraphFで描画した際は小刻みに震えるようになりますが MV1DrawModelでは小刻みに震えるようにならないです
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.60 )
名前:管理人 日時:2023/03/08 07:31

> また私が開発で使用しているPC(No.51の構成)で実行したものを友人に試してもらったところ、先ほど(友人のPCで確認時)より揺れが気になるということでした。 ビルドした環境によって揺れが異なるということでしょうか? うーん謎ですね… > またPC側に描画するようにした場合でもDrawFormatStringやDrawGraphFで描画した際は小刻みに震えるようになりますが > MV1DrawModelでは小刻みに震えるようにならないです MV1DrawModel で小刻みに震えなくなるとのことですが、描画するものは何でも良いのでしょうか? 例えばDXライブラリのパッケージの『サンプルプログラム実行用フォルダ』の中には FilterTest.mqo という12ポリゴンの3Dモデルがあるのですが、こちらを MV1DrawModel で 描画した場合も小刻みに震えなくなりますでしょうか?
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.61 )
名前:猫の湯飲み 日時:2023/03/08 23:00

>MV1DrawModel で小刻みに震えなくなるとのことですが、描画するものは何でも良いのでしょうか? >例えばDXライブラリのパッケージの『サンプルプログラム実行用フォルダ』の中には >FilterTest.mqo という12ポリゴンの3Dモデルがあるのですが、こちらを MV1DrawModel で >描画した場合も小刻みに震えなくなりますでしょうか? どのような3Dモデルでも小刻みに震えなくなります。(FilterTest.mqoでも同様です)
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.62 )
名前:管理人 日時:2023/03/09 02:53

> どのような3Dモデルでも小刻みに震えなくなります。(FilterTest.mqoでも同様です) お試しいただきありがとうございます 小刻みに揺れる件について原因を特定するのはかなり難しそうなので、FilterTest.mqo のような 描画しても負荷が殆どないモデルを描画することで小刻みに揺れる現象を抑えるということで 小刻みに揺れる件につては解決とできればと思うのですが、如何でしょうか?
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.63 )
名前:猫の湯飲み 日時:2023/03/09 23:58

了解しました ここまでお付き合いいただき、誠にありがとうございました。 こちらでも原因を検証して分かり次第、ご連絡させていただきます。
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.64 )
名前:管理人 日時:2023/03/10 07:23

長い期間が掛かって完全な解決とならずすみません ( 再現用に実機まで用意してここまで難儀したのは初めてかもしれません… m(_ _;m ( VR機器手強い… ) ) 私の方でも何か分かった際はこちらのスレッドでご連絡します
メンテ

Page: 1 | 2 | 3 | 4 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存