teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

文章を修正

2020/12/08 11:30

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- 物体を中心に回転するという処理を実装したい。
1
+ 原点ではなく点Pを中心に回転するという処理を実装したい。
body CHANGED
File without changes

1

文章とタイトルを編集しました。

2020/12/08 11:29

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- モ○ハンのカメラ回転を作りたい 物体を中心に回転するカメラを実装したい。
1
+ 物体を中心に回転するという処理を実装したい。
body CHANGED
@@ -1,12 +1,16 @@
1
+ 提示コードのここですのコメント部の二行ですが 
2
+ 質問1、現在はコードでは原点中心に回転するコードになっており自分のやりたいことは原点ではなく
1
- タイトル通りですがクォータミオン使ってモ○ハンなどで右スティックを動かすと視点がキャラクタを中心に回るあのカメラ回を実装いのですがどうすればいいでしょうか?クォータミオン使って指定した軸θど回転するという処理実装できましたがここから先をどうしたらいいかわかりませんどうすればいいのでしょうか?
3
+ 物体を中心に回転してほしいので物体P座標中心に回転するはどうすればいいのでしょうか?
2
4
 
5
+ 質問2 また視点である二行目はどうすれば常に物体を見つめるという状態を作れるのでしょうか?
3
6
 
7
+ 回転は実装できましたがその後がわからなく参考サイトではそのあたりの回答がないので困っています。
8
+ 参考サイト: https://teratail.com/questions/251067
4
9
 
5
10
 
6
- 参考サイト: http://marupeke296.com/DXG_No10_Quaternion.html
7
11
 
12
+
8
13
  ```cpp
9
-
10
14
  //アップデート
11
15
  void Game::Update()
12
16
  {
@@ -24,7 +28,6 @@
24
28
 
25
29
 
26
30
  glm::vec3 v(0.0f,-1.0f,0.0f); //回転する向き
27
- float speed = 3;
28
31
  glm::qua<float> Q(cos((PI_ * speed) / 2.0f), glm::dot(v.x, sin((PI_ * speed) / 2.0f)), glm::dot(v.y, sin((PI_ * speed) / 2.0f)), glm::dot(v.z, sin((PI_ * speed) / 2.0f)));
29
32
  glm::qua<float> R(cos((PI_ * speed) / 2.0f), glm::dot( -v.x, sin((PI_ * speed) / 2.0f)), glm::dot(-v.y, sin((PI_ * speed) / 2.0f)), glm::dot(-v.z, sin((PI_ * speed) / 2.0f)));
30
33
 
@@ -41,13 +44,17 @@
41
44
  printf("w.y: %.2f\n", w.y);
42
45
  printf("w.z: %.2f\n\n\n", w.z);
43
46
  */
47
+
48
+ // ここのコード
49
+ camera->setMove( w );
50
+ //camera->setCenter( mh->getPosition());
44
51
 
45
- camera->setMove(w);
46
- camera->setCenter( mh->getPosition() - camera->getPosition());
47
52
 
53
+
48
54
  //camera->setMove(pos);
49
55
  mh->Update();
50
56
 
51
57
  KeyInput(); //キー入力
52
58
  }
59
+
53
60
  ```