Discuss Scratch
- Discussion Forums
- » 日本語
- » 3Dについて話し合うトピック ※最初に#1を必ず読もう※
- TakahashiHarumi
-
2 posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
質問です。
x,y軸の角度を180度変えたときにx軸なら左右が、y軸なら上下が反転したものが表示されてしまいます。
それと、自分の視点を左右と上下に変えるためにx,y軸の角度値を変更しているのでが、視点を上下に変えようとしてy軸角度を変えると、z=0を中心に回転してしまいます。これを自分中心で回転させたいです。
この2つをかいけつするためにはどうすればいいでしょうか?
x,y軸の角度を180度変えたときにx軸なら左右が、y軸なら上下が反転したものが表示されてしまいます。
それと、自分の視点を左右と上下に変えるためにx,y軸の角度値を変更しているのでが、視点を上下に変えようとしてy軸角度を変えると、z=0を中心に回転してしまいます。これを自分中心で回転させたいです。
この2つをかいけつするためにはどうすればいいでしょうか?
- KimiruHamiru
-
500+ posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
x,y軸の角度を180度変えたときにx軸なら左右が、y軸なら上下が反転したものが表示されてしまいます。https://scratch-mit-edu.ezproxyberklee.flo.org/projects/1041991062/
視点を上下に変えようとしてy軸角度を変えると、z=0を中心に回転してしまいます。これを自分中心で回転させたいです。
について言えば、
は、正しい動作、で、その次の x,y軸の角度を180度変えたときにx軸なら左右が、y軸なら上下が反転した~
の部分、の問題と思われます。 ~ものが表示されて
現状で「表示するかどうか」は、
ある点が画面内にあるかどうか(2dxが-240から240、2dyが-180から180)の判定をしていると思いますが、ここで、
「距離(=視点、瞳、ピンホールカメラの穴の位置からの距離。二乗する計算上常にプラスになる)」ではなくて
「回転と移動操作後の点が、視点の前にあるか後ろにあるか(見ている方向が関係するのでマイナスにもなる)」による判定をする
必要があるかと思います。
現状では細かい問題があるように思えるので簡単に直すのは難しいのですが、
すごく大雑把には
定義 3次元→2次元(x)(y)(z)みたいなことをして2dzが0より大きいか、みたいな判定することになると思います。
...
[2dx v]を(((view)*(x))/(距離))にする
[2dy v]を(((view)*(y))/(距離))にする
[2dz v]を(((view)*(z))/(距離))にする
の部分は、ごめんなさい。 視点を上下に変えようとしてy軸角度を変えると、z=0を中心に回転してしまいます。これを自分中心で回転させたいです。
どう操作するとどうなることが問題で、どうしたいのか、がよくわかりませんでした。
- KimiruHamiru
-
500+ posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
補足:
どう直すかは難しいのですが、
「視点の前にあるか後ろにあるかの判定」のコードを追加しようとした時に
障害となりそうな「細かい問題」と思うのは、
・変数「距離」の値を求める部分で、「x,y,z」のブロックが「引数(赤紫色)」じゃなく「変数(オレンジ色)」である。このため、(恐らく)意図した値になっていない
・座標変換後(回転と移動の操作をしたあと)の計算結果の座標値は2dx,2dyだけ残って、zの値が捨てられている(「画面座標系でのz=奥行」が使えない)
(派生して、「2dzをview*z/zにする」などと書くと計算上常にプラスになる)
という辺りです。
どう直すかは難しいのですが、
「視点の前にあるか後ろにあるかの判定」のコードを追加しようとした時に
障害となりそうな「細かい問題」と思うのは、
・変数「距離」の値を求める部分で、「x,y,z」のブロックが「引数(赤紫色)」じゃなく「変数(オレンジ色)」である。このため、(恐らく)意図した値になっていない
・座標変換後(回転と移動の操作をしたあと)の計算結果の座標値は2dx,2dyだけ残って、zの値が捨てられている(「画面座標系でのz=奥行」が使えない)
(派生して、「2dzをview*z/zにする」などと書くと計算上常にプラスになる)
という辺りです。
- kirby0805
-
19 posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
3Dって簡単に言うなら「奥行き(距離)は大きさで表現している」みたいな認識で合ってますか?
- KimiruHamiru
-
500+ posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
画面上の縦横位置をx、y座標で表現する世界で 3Dって簡単に言うなら「奥行き(距離)は大きさで表現している」みたいな認識で合ってますか?
「3つ目の数字(奥行)、を、どう画面上で表現するか」
という3D描画の話に関しては、
「奥行き(距離)は大きさで表現している」で、合ってると思います。
手前にあるものと奥にあるものが元々同じ大きさとは限らないとか
描かれるものの一番手前と一番奥の物の大きさの違いが、画面上の1ドットの違いより小さい場合もある
し、
大きさ以外でも遠くの景色はかすんでみえる、洞窟の奥は暗く見える
みたいな表現もあるし、
重なった奥の物は手前のものに隠れる
みたいな話もあるので
大きさで表現する以外の方法もある、とも思います。
- TakahashiHarumi
-
2 posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
左右上下が逆さになる問題はz/距離で解決できました。
ですが、視点の方の解決策が分かりません。イメージしているものは
517100829←この番号の人のものです。
1043293205←これが今の自分のものです。
ですが、視点の方の解決策が分かりません。イメージしているものは
517100829←この番号の人のものです。
1043293205←これが今の自分のものです。
- kokkun1
-
20 posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
左右上下が逆さになる問題はz/距離で解決できました。
ですが、視点の方の解決策が分かりません。イメージしているものは
517100829←この番号の人のものです。
1043293205←これが今の自分のものです。
カメラの移動以前に、まだ描画部分にバグがあるのでそれを直さないとカメラの移動のバグを実際にテストして探すことは難しいと思います。
xとyを距離ではなくzで割る必要があります。
定義 3次元→2次元(x)(y)(z)
[2dx]を((view)*((x)/(z)))にする
[2dy]を((view)*((y)/(z)))にする
[2dz]を(z)にする
- HARINEZUMINOKETU
-
73 posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
▢とかを3Dにしてるんだけどぷれいやーと一緒に動かしたりする方法って知ってる?数値のxyzに何らかの計算がひつようだけどそのけいさんのしくみおしえてほしい
- HARINEZUMINOKETU
-
73 posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
3dデータ(数字)にプレイヤーの座標といっしょに動いてプレイヤーの向きに向くけいさんの仕方を知りたいです
- HARINEZUMINOKETU
-
73 posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
返信気づくようにうつだけだから #271
その3Dデータは何を示していますか?
- HARINEZUMINOKETU
-
73 posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
プレイヤーのむきに戦闘機をむけるから カメラx かめらy のところに ▢の先端を向ける方法 ていったらわかる? #271
プレーヤーの位置に敵を向かせるもの(自機狙い)を作りたいということですか?
- kokkun1
-
20 posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
3Dということなので、ちゃんと書くとプレイヤーのむきに戦闘機をむけるから カメラx かめらy のところに ▢の先端を向ける方法 ていったらわかる? #271
プレーヤーの位置に敵を向かせるもの(自機狙い)を作りたいということですか?
プレイヤーの位置Pと戦闘機の位置Qがあるとき、QからPを向くときの縦と横の角度がほしいと言うことであっていますか?
- HARINEZUMINOKETU
-
73 posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
pの向きにQの向きを合わせるプログラムを知りたい3Dということなので、ちゃんと書くとプレイヤーのむきに戦闘機をむけるから カメラx かめらy のところに ▢の先端を向ける方法 ていったらわかる? #271
プレーヤーの位置に敵を向かせるもの(自機狙い)を作りたいということですか?
プレイヤーの位置Pと戦闘機の位置Qがあるとき、QからPを向くときの縦と横の角度がほしいと言うことであっていますか?
- kokkun1
-
20 posts
3Dについて話し合うトピック ※最初に#1を必ず読もう※
PとQの3次元座標から計算するということですか?pの向きにQの向きを合わせるプログラムを知りたい3Dということなので、ちゃんと書くとプレイヤーのむきに戦闘機をむけるから カメラx かめらy のところに ▢の先端を向ける方法 ていったらわかる? #271
プレーヤーの位置に敵を向かせるもの(自機狙い)を作りたいということですか?
プレイヤーの位置Pと戦闘機の位置Qがあるとき、QからPを向くときの縦と横の角度がほしいと言うことであっていますか?
また、向きというのは角度の情報で合っていますか?