質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

Q&A

解決済

1回答

5514閲覧

【3D】DXライブラリでのカメラと表示について

tokei0205

総合スコア10

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

0グッド

1クリップ

投稿2015/03/01 05:11

編集2015/03/04 10:52

趣味でプログラムを組んでいるTOKEIと申します。
現在、3Dでゲームを作ろうと思い試しにDXライブラリで移動テストを作ってみたのですがモデルに近づくとポリゴンが表示されなくなってしまいます。
ポリゴン単位での読み込みの問題かと思っているのですが、解決方法はもとよりなぜこうなるのかすらはっきりしていません。
どうかこのコードの問題点をご指摘ください。

lang

1#include "DxLib.h" 2#include "math.h" 3int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR IpCmdLine, int nCmdShow) 4{ 5 int StageHD; 6 int PlayerModel; 7 VECTOR CameraPos; 8 VECTOR PlayerPos; 9 float PlayerV=0.0f,PlayerH=0.0f; 10 VECTOR EnemyPos; 11 float EnemyV=0; 12 SetGraphMode(1600, 1000, 32); 13 ChangeWindowMode(TRUE); 14 if (DxLib_Init() == 1) { 15 DxLib_End(); 16 MessageBox(0, "DirectXの初期化に失敗しました。\nDiretX9がインストールされているか確認してください", "MMDMMO Dev1-3-15", MB_OK | MB_ICONSTOP); 17 return 1; 18 } 19 StageHD=MV1LoadModel("models/gekido-town.x"); 20 PlayerModel = MV1LoadModel("models/Player/ameno.pmx"); 21 MV1DrawModel(StageHD); 22 MV1DrawModel(PlayerModel); 23 // 描画先を裏画面にする 24 SetDrawScreen(DX_SCREEN_BACK); 25 26 // カメラの座標を初期化 27 PlayerPos.x = 0.0f; 28 PlayerPos.y = 100.0f; 29 PlayerPos.z = 0.0f; 30 31 // ESCキーが押されるかウインドウが閉じられるまでループ 32 while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) 33 { 34 // 画面をクリア 35 ClearDrawScreen(); 36 37 // WASD+スペース+SHIFTでカメラの座標を移動 38 if (CheckHitKey(KEY_INPUT_W) == 1) 39 { 40 PlayerPos.x += sin(PlayerH)*1.0f; 41 PlayerPos.z += cos(PlayerH)*1.0f; 42 } 43 if (CheckHitKey(KEY_INPUT_S) == 1) 44 { 45 PlayerPos.z -= 1.0f; 46 } 47 if (CheckHitKey(KEY_INPUT_A) == 1) 48 { 49 PlayerPos.x -= 1.0f; 50 } 51 if (CheckHitKey(KEY_INPUT_D) == 1) 52 { 53 PlayerPos.x += 1.0f; 54 } 55 if (CheckHitKey(KEY_INPUT_SPACE)) 56 { 57 PlayerPos.y += 1.0f; 58 } 59 if (CheckHitKey(KEY_INPUT_RSHIFT)) 60 { 61 PlayerPos.y -= 1.0f; 62 } 63 //方向キーでカメラの向きを移動 64 if (CheckHitKey(KEY_INPUT_UP)==1) 65 { 66 PlayerV -= DX_PI_F / 60.0f; 67 } 68 if (CheckHitKey(KEY_INPUT_DOWN) == 1) 69 { 70 PlayerV += DX_PI_F / 60.0f; 71 } 72 if (CheckHitKey(KEY_INPUT_LEFT)==1){ 73 PlayerH -= DX_PI_F / 60.0f; 74 } 75 if (CheckHitKey(KEY_INPUT_RIGHT) == 1) 76 { 77 PlayerH += DX_PI_F / 60.0f; 78 } 79 CameraPos = PlayerPos; 80 CameraPos.y += 50; 81 // カメラの位置と注視点をセット、注視点は原点 82 SetCameraPositionAndAngle(PlayerPos,PlayerV,PlayerH,0); 83 84 // モデルの描画 85 MV1DrawModel(StageHD); 86 MV1DrawModel(PlayerModel); 87 MV1SetPosition(PlayerModel, PlayerPos); 88 // 裏画面の内容を表画面に反映 89 ScreenFlip(); 90 } 91 WaitKey(); 92 DxLib_End(); 93 return 0; 94}

開発中なのでまだ使用していない変数や、Warningなど残っていますがなにとぞよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SetCameraNearFarでモデルとカメラがどれだけ近づいた時まで表示するかの設定をする必要がありそうですね

投稿2015/03/01 06:07

femto16

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tokei0205

2015/03/01 06:39

キチンと表示されました!リファレンスを読むのは重要だと言うことも学べました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問