Discuss Scratch

akku--n11
Scratcher
1000+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

こんなスタジオがあります。

この線から下は 署名(しょめい) です

カワイソス ಥ_ಥこれで傾向乗りたい

適当ポストカウント:
Found 1032 posts.
yukku
Scratcher
1000+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

質問です。
塗りつぶしありの3Dゲームを作っているのですが描画する順番は何を基準にソートしたらいいですか?

2022年くらいまで良く日本語フォーラムにいましたが今はもう手を引いてますね
inoking
Scratcher
1000+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

奥行きの深い順の一択と思います。

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」として遊ぶためのものではない

・「『報告乱用されたそれは間違いです。Scratch チームは問題のない作品を手動で非共有にすることはありません。」※自動の場合は「多数報告された」というメッセージあり
・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
daidaidai1
Scratcher
1000+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

自分はオブジェクトの中心からの距離でソートしますが、z-ソート法だと何を基準にソートしても上手く描画できない状況はあります。

最近3Dにはまってます。




yukku
Scratcher
1000+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

「一番奥の点のz座標」をまだ試していませんでした。なんかいけそうなので試してきます。

2022年くらいまで良く日本語フォーラムにいましたが今はもう手を引いてますね
inoking
Scratcher
1000+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

う~ん
確かにZ順だけではうまくいかないときもあるようですね。 Zオーダー
ただその場合は特別な工夫をしないかぎりどのような順序でもダメですね。

これは署名と呼ばれるもので投稿本文とは関係ありません。
Scratch は「世界最大の子ども向けコーディングコミュニティーで、シンプルなビジュアルインターフェースを持ったコーディング言語」
 つまり「子ども SNS」として遊ぶためのものではない

・「『報告乱用されたそれは間違いです。Scratch チームは問題のない作品を手動で非共有にすることはありません。」※自動の場合は「多数報告された」というメッセージあり
・「傾向」とは単に一定の基準で作品を並びかえただけのもので、ランキングでもなんでもないナンバーワンよりオンリーワンを目指してみては?
・「フォロー」とは他の Scratcher が何をしているかを簡単に確認するためのもので、「フォロワー」は「ファン」ではない
・「スタジオ」とは特定のテーマに沿って作品をまとめたり共同制作したりするための場所
・「星」や「ハート」などを何かの見返りとすることは Scratch チームによって禁止されている
daidaidai1
Scratcher
1000+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

上手くいかない部分は割り切って、そういう状況を作らないように扱うしかないですね…

最近3Dにはまってます。




oligami
Scratcher
100+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

普通は奥から順でいいと思いますが(自分はzではなくx²+y²+z²派)、本当にちゃんとしたいなら、面と面※制限ありの交線を計算したり、あと何か(z-sort法だと、いい方法は思いつかないけど、すべての面 ※制限なし の交線を計算して、ぶつ切りにしてから、z-sortで描画するくらいでしょうか。x²+y²+z²ならば、すべての頂点を自分から距離と角度、※ベクトルで表して、三角関数で角度をいろいろした値が一定値を超えた場合は計算並びに画面から排除、その後、すべての面※制限ありと、“すべての頂点との距離ごとで”球との交線から、ぶつ切りにして、遠い順に描画するくらいかな)、ぱっと思いついたやつはこれくらいしかないし、うまく文章に著せなかったからたぶんかなりわかりづらいと思う。①,②とかそんな感じで書けばもっとわかりやすかった気がする。

後輩にRust(プログラミング言語)やろうぜと言ったらゲームのRustと勘違いされた()
そんな流行ってんのそのゲーム?
sapphire-23
Scratcher
4 posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

(カメラx)
(カメラy)
(カメラz)
(オブジェクトx)
(オブジェクトy)
(オブジェクトz)
(ワールドx)
(ワールドy)
(ワールドz)
の変数を作ることは、わかりますがその変数をどのように動かせばいいかわかりません。

Last edited by sapphire-23 (June 13, 2021 08:25:26)

narita6gou
Scratcher
37 posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

とりあえず枠だけでも回転させなくてもいいから▢四角▢作りたい

これは署名と言って、手動で描いたものではありません。
無駄なトピック作成はやめましょう。
KimiruHamiru
New Scratcher
500+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

3Dに何を求めるかというのは人それぞれでいいと思うので、
「変数もペンも使わないけど3D」とかもできます。
https://scratch-mit-edu.ezproxy.canberra.edu.au/projects/571091320/
KimiruHamiru
New Scratcher
500+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

narita6gou wrote:

とりあえず枠だけでも回転させなくてもいいから▢四角▢作りたい
ペンの使い方はもう知っている
https://scratch-mit-edu.ezproxy.canberra.edu.au/projects/570598920/
のであれば、たぶんnarita6gouさんが3Dに向けて次に挑戦してみるべきことは
ペンを下ろす
x座標を(0)、y座標を(0)にする
x座標を(100)、y座標を(0)にする
x座標を(100)、y座標を(100)にする
x座標を(0)、y座標を(100)にする
x座標を(0)、y座標を(0)にする
ペンを上げる
みたいなコードで「ペンで図形を描くこと」かなと思います。
どんな数字を入れるとどんな絵がかけるか、ということになれてくれば
「好きなように四角を作る」のはすぐできると思います。

3Dとなるとその「どんな数字を入れる」、のところをコンピュータに計算させるためにいろいろ計算が出てくると思いますが、
とにかく
数字を使って「ペンで図形を描くこと」に、なれるとよいと思います。

Last edited by KimiruHamiru (Sept. 16, 2021 12:10:54)

mikan__s
Scratcher
71 posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

質問です。
2Dではx1,y1,x2,y2のようにして長方形の一面の当たり判定を考えますが、3D上でも6面をこのようにして計算できるんですか?
あと、出来たとしても3Dは6面あるので6*2(1面に対して2個の座標)でx1,y1,z1~x16,y16,z16まで必要になるという計算になりますが、もっと数値を減らす方法はありますか?
KimiruHamiru
New Scratcher
500+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

mikan__s wrote:

2Dではx1,y1,x2,y2のようにして長方形の一面の当たり判定を考えますが、3D上でも6面をこのようにして計算できるんですか?
あと、出来たとしても3Dは6面あるので6*2(1面に対して2個の座標)でx1,y1,z1~x16,y16,z16まで必要になるという計算になりますが、もっと数値を減らす方法はありますか?
どういう場面で、何をやりたいかによってプログラムの作りは違ってくると思うのですが、

「x1,y1,x2,y2のようにして長方形の一面の当たり判定を考えます」
というのは、例えば
「左下の座標(x1, y1)と右上の座標(x2, y2)から、長方形の中か外か判断する」
言い換えると

「x1からx2の範囲」
「y1からy2の範囲」
という2つの式だけ、4つの数値で、
「長方形の中か外かを判定できる」

というとこまで、いいでしょうか?
この考え方を延長するなら、

「x1からx2の範囲」
「y1からy2の範囲」
「z1からz2の範囲」
という3つの式だけ、6つの数値で、
立方体の「中か外か」を判定できる、

ということは言えます。

立方体の「表面かどうか」を判定する
といった話になると、もうちょっと複雑な話になると思いますが、
「立方体の中か外かを判定」できればいいなら、そこそこ簡単、と言えると思います。
mikan__s
Scratcher
71 posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

間違えました。
12個の頂点の数値を入れるとなると、立方体の頂点は8個なのでどれか1つはかぶりますね。
あと、
「x1からx2の範囲」
「y1からy2の範囲」
「z1からz2の範囲」
ということは、長方形は対角線でつなげるような点の数値があると形が決まります。
そして、立方体(直方体)の中の頂点と頂点を立方体(直方体)の中を通る線がつなげれるところの頂点の数値を入れると形が決まります。
これを使って当たり判定が作れる、ということですか?
KimiruHamiru
New Scratcher
500+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

mikan__s wrote:

「x1からx2の範囲」
「y1からy2の範囲」
「z1からz2の範囲」
ということは、長方形は対角線でつなげるような点の数値があると形が決まります。
そして、立方体(直方体)の中の頂点と頂点を立方体(直方体)の中を通る線がつなげれるところの頂点の数値を入れると形が決まります。
これを使って当たり判定が作れる、ということですか?
(直方体でしたね。やんわり指摘ありがとうございます)

答えになるかわかりませんが、こんなプログラム
@greenFlagがクリックされたとき
たくさんスタンプする // この定義を作るときは「画面を再描画せずに実行する」にチェックしとくと一瞬で描画がおわる
定義 たくさんスタンプする
消す
(1000)回繰り返す
(どこかの場所 v)へ行く
スタンプ
end
を書いたことがなかったら試してみると良いです。大量のネコがステージ全体に分身します。
これを
@greenFlagがクリックされたとき
消す
(1000)回繰り返す
(どこかの場所 v)へ行く
もし<(0)<(x座標)>なら
スタンプ
end
end
と書き換えると、ネコが「右の方にいるとき」だけスタンプされます。
@greenFlagがクリックされたとき
消す
(1000)回繰り返す
(どこかの場所 v)へ行く
もし<(0)<(x座標)>なら
もし<(x座標)<(100)>なら
スタンプ
end
end
end
とすると、ネコが帯状に並びます。

これが「x1からx2の範囲」の、私のイメージです。
条件式は、
もし<<(0)<(x座標)>かつ<(x座標)<(100)>>なら
こう書いてもいいです。

「xしかない1次元」から、「xとyがある2次元」へはこのまま話を拡張できると思います。
「xとyしかない2次元」から、「xとyとzがある3次元」へは、Scratchの仕様上、全体を「変数を使った書き方」に書き換えることになると思いますが、考え方はこの延長です。

「対角線」のイメージで言うなら、たとえば

直方体の対角線を「宙に浮いた、とても頑丈な針金」として、
世界の上下左右前後から壁が押し寄せて来て、針金に当たったら壁は止まる、
上下左右前後の6枚の壁が全部止まった時、残った空間が直方体、

という感じかなと思います。

実際問題として当たり判定が「作れるか」どうか、というのは「直方体と何が」当たった判定か、とか「どれだけの時間内に何回判定する必要があるか、どんな性能のコンピュータ上で実行するか」とか「xyz軸に沿わないような回転した直方体を考慮するか」とか「そもそも相手は点なのか直方体なのか球なのか動き回るイカなのか」とか条件がいろいろ出てくるので、文字通り「期待通り」に「できる」かは、何とも言えない、条件次第、期待する内容次第、ということになると思いますが、ロジックとしては「当たり判定は作れる」です。
mikan__s
Scratcher
71 posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

ありがとうございます。
https://turbowarp.org/569367564/ これはTurbowarpですが、当たり判定が出来ました。
ですが、新しい問題も出てきて、当たったら元の場所に戻りますがガタガタします。
この問題はどう解決しますか。
oligami
Scratcher
100+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

mikan__s wrote:

ありがとうございます。
https://turbowarp.org/569367564/ これはTurbowarpですが、当たり判定が出来ました。
ですが、新しい問題も出てきて、当たったら元の場所に戻りますがガタガタします。
この問題はどう解決しますか。
二次元の床の当たり判定とかと同じでいいと思います

後輩にRust(プログラミング言語)やろうぜと言ったらゲームのRustと勘違いされた()
そんな流行ってんのそのゲーム?
mikan__s
Scratcher
71 posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

二次元の床の当たり判定とかと同じでいいと思います
一応二次元の床判定と同じようなプログラムです。
KimiruHamiru
New Scratcher
500+ posts

3Dについて話し合うトピック ※最初に#1を必ず読もう※

mikan__s wrote:

https://turbowarp.org/569367564/ これはTurbowarpですが、当たり判定が出来ました。
ですが、新しい問題も出てきて、当たったら元の場所に戻りますがガタガタします。
この問題はどう解決しますか。
「wキーを押し続けるとcamera_zの値が100と103で振動する」ということかと思うのですが、

今のプログラムはおおざっぱに言えば、

描画
当たり判定
操作
戻す

の順になってる、
のがマズそうです。

戻すべきかどうかの判断が、操作前の情報に基づいている

ので正しく戻れてないようです。

「アレがコレを呼び出す」とか、「この定義の機能の範囲はここまで」、
とかいった辺りがちょっとフクザツなので、どう直すべきかは考え方次第と思いますが、

描画
操作
当たり判定
戻す

の順になれば、解決すると思います。

Powered by DjangoBB