Discuss Scratch

souichi0514
Scratcher
21 posts

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

#341 直りました!ありがとうございました!
rentaro_
Scratcher
51 posts

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

質問です。いま3Dのさくひんをつくっているのですが、今のところ骨組みしか作れず面を塗りつぶす方法を具体的に教えてください。できるだけ軽くなるようにお願いします。
https://scratch.mit.edu/projects/1195065183
misuta-kazu
New Scratcher
1 post

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

ありがとう!
U-Y-Scratch
Scratcher
500+ posts

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

3D作りたいですけど、、、難しいですよね?
sei6sei
Scratcher
500+ posts

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

いいえ。
人によって難しいと考えるレベルは変わりますが、理解できればとても簡単です
Yu14916
Scratcher
6 posts

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

#345
このプロジェクトを見れば分かる通り、実は3Dは簡単なんです。中身を見ると拍子抜けしますよ。

じゃあなぜ世間的に3Dは難しいと言われるのか。それは他の要素が難しいからです。例えば、図形をリストで管理したり、視点を回したり、当たり判定を作ったり…。これらは、scratchや数学に慣れていないと割と難しいです。

しかし、それはどんなものでも同じだと思うんです。「猫の歩くプロジェクト」を初めて作った初心者scratcherが、いきなり自力で「プラットフォーマー」を作るのは難しいように、いきなりは誰でも無理です。段階を踏んで、少しずつ学んで慣れていけば、いつかできるようになるはずです。

Last edited by Yu14916 (July 13, 2025 10:41:04)

U-Y-Scratch
Scratcher
500+ posts

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

このプロジェクトは確かに簡単そうに見えますね
chutaro5978
Scratcher
100+ posts

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

3dについてわかりやすく解説してくれている作品や記事などがあったら教えてください。3dの勉強がしたいです。
rentaro_
Scratcher
51 posts

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

chutaro5978 wrote:

3dについてわかりやすく解説してくれている作品や記事などがあったら教えてください。3dの勉強がしたいです。
スクラッチwikiでレイキャスティングと検索してください。一番上に出てくるやつがいっちゃんわかりやすいと思います。
rentaro_
Scratcher
51 posts

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

rentaro_ wrote:

chutaro5978 wrote:

3dについてわかりやすく解説してくれている作品や記事などがあったら教えてください。3dの勉強がしたいです。
スクラッチwikiでレイキャスティングと検索してください。一番上に出てくるやつがいっちゃんわかりやすいと思います。
https://ja.scratch-wiki.info/wiki/%E3%83%AC%E3%82%A4%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0

Last edited by rentaro_ (July 14, 2025 13:02:28)

rentaro_
Scratcher
51 posts

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

rentaro_ wrote:

rentaro_ wrote:

chutaro5978 wrote:

3dについてわかりやすく解説してくれている作品や記事などがあったら教えてください。3dの勉強がしたいです。
スクラッチwikiでレイキャスティングと検索してください。一番上に出てくるやつがいっちゃんわかりやすいと思います。
https://ja.scratch-wiki.info/wiki/%E3%83%AC%E3%82%A4%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0
サンプルも載っていてわかりやすいです。
ioqj
Scratcher
500+ posts

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

Scratch Wikiを活用してみてはいかがでしょうか。
3Dって調べれば、結構いろんな情報が出てくるので、参考にしてみてはいかがでしょう。
chutaro5978 さんのやりたい、3Dの表現の仕方も見つけることが出来るとおもいます。
finalbacon
Scratcher
100+ posts

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

#348
scratch wiki以外でおすすめするのは、@yukkuさんの作ったチュートリアルですね。線を主体にした本格的な3Dが作れるようになります。
KimiruHamiru
New Scratcher
500+ posts

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

chutaro5978 wrote:

3dについてわかりやすく解説してくれている作品や記事などがあったら教えてください。3dの勉強がしたいです。
3Dの勉強、ということでは、私は
https://webglfundamentals.org/webgl/lessons/ja/
で勉強しました。
WebGLのチュートリアルなので直接Scratchで役に立たない話もありますが、私が書いたプロジェクトは、ここで得た知識をScratchに持ち込んだもの(あるいは持ち込もうとしたもの)が多いです。

ほかに、このトピック自体
https://scratch.mit.edu/discuss/topic/372004/
も、ひととおり目を通してみてもよいかもと思います。
順序立ててまとまってるわけではないですが、基礎的(根源的)な話題もたびたび出てきます。
chutaro5978
Scratcher
100+ posts

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

https://scratch.mit.edu/projects/1197128879 ここまでできました。視点を変えたり、当たり判定をつけるにはどうしたら良いでしょうか。
KimiruHamiru
New Scratcher
500+ posts

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

chutaro5978 wrote:

https://scratch.mit.edu/projects/1197128879 ここまでできました。視点を変えたり、当たり判定をつけるにはどうしたら良いでしょうか。

視点を変えたり」というと、大雑把に「視点の位置を動かす」と「視点の向きを動かす」があるかと思いますが、
Yukku氏のチュートリアル( https://scratch.mit.edu/projects/470897319/ )に準拠して進めているのであれば、

視点の位置を動かす」の方は、既に実装済みです。
このチュートリアルのコードでは、箱を動かすのではなく、視点(カメラ)を動かしている、という考え方になってるはずです。

視点の向きを動かす」の方は、
チュートリアル中のさいごのほう、「6, 回転」の部分で説明されているので、それに従って書いてみるとよいと思います。
チュートリアルプロジェクトのコードを開けば、実際に動いているコードも見られます。
(チュートリアル中の回転のコードは、「カメラ位置が0,0,0固定ではない、ハコの位置が0,0,0ではない、回転の中心ガ0,0,0ではない、基本の仕組みが「線を引く(2点のx、y、z座標を同時に扱う)」前提になっている」、などの理由で、かなり複雑に見えるコード(多分すらすらと読解できる人はいないレベル)になってる気はします。「回転」は3Dであっても所詮は「2D回転の繰り返し(縦に回して横に回す、みたいな)」なので、なにがしかの、もっと単純な状況で回転する2Dのサンプルプロジェクトを探して、寄り道してみるのもよいかもと思います。)

当たり判定をつけるには
チュートリアルに沿って行くなら「箱は動かない」「x,y,z軸と平行に置いてある」ので、「カメラのx,y,z座標が箱(x:-50~50,y:-50~50,z:50~100)の中にあるかどうか」判定すればとりあえずできそうです。ほかに、「箱の中心点からカメラまでの距離」で判定するような当たり判定も、あり得る(Sphere colliderとかいった呼び名で、3Dゲームとかで実際に使われている)と思います。

もうちょっと高度な(実用度の高い)、
「wキーを押したら、カメラは、カメラが向いている方向に進む」とか「壁に斜めに突っ込んだら壁を擦りながら進む」とかいった話になるとまた複雑で、一朝一夕には説明できるものでもないのですが、その辺の仕組みや考え方は、
Griffpatch氏のRaycasterのチュートリアル
https://www.youtube.com/watch?v=M1c5TcdITVs
や、そのプロジェクトコード(あるいは類似のプロジェクト)は(それ自体は2Dの動きですが)参考になるかと思います。
rentaro_
Scratcher
51 posts

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

質問です。以下のプロジェクトでは、骨組みを表示することはできたのですが、どうすれば壁の部分を塗りつぶせますか。できれば三角塗りつぶしの方もおしえていただきたいです。
https://scratch.mit.edu/projects/1195065183
KimiruHamiru
New Scratcher
500+ posts

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

rentaro_ wrote:

質問です。以下のプロジェクトでは、骨組みを表示することはできたのですが、どうすれば壁の部分を塗りつぶせますか。できれば三角塗りつぶしの方もおしえていただきたいです。
https://scratch.mit.edu/projects/1195065183
「三角形の塗りつぶし」自体は、
tri-fill
tri-filler
とか呼ばれて、高速化、効率化の研究がされているので、参考になるプロジェクトがたくさん見つかるはずなので、それを見るとよいです。
日本語だと名前に表記ブレがあって見つけにくそうですが、「三角形の塗りつぶし」で検索してもいくつか出て来ます。
私が観察した範囲では、ポリゴンの塗りつぶしを行うプロジェクトでは、「ほかの人が作ったtri-fillerをそのまま使っている」ケースが多いので、そうすればよいと思います(自力で作るのは「楽しい」とは思います)。

一方で、
現状の「骨組みを表示する」プログラムで、これをそのまま使うのは結構大変です。

tri-fillerのプロジェクトをいくつか見ていくと気づくと思いますが、おそらく、ほとんどの場合、
三角形の塗りつぶしに使われている定義は
定義 trifill (x1)(y1)  (x2)(y2)  (x3)(y3)
あるいは
定義 3D tri fill (x1) (y1) (z1)  (x2)(y2)(z2)  (x3)(y3)(z3)
みたいな感じで、「ひとまとめにした、3つの点の情報」が必須になってるはずです。

一方で、現在のプロジェクトのエンジンは「2つの点をひとまとめにする」ことで、線分を引く、という仕組みで書かれています。
そこには、「三角形」の情報がありません。
画面上で三角形に見えても、「どの辺とどの辺とどの辺」の組み合わせが三角形なのか、「何を」塗りつぶすのか、コードからは判別できません。

三角形塗りつぶしをする場合の前提は、三角形が明確である事、複雑な図形の場合は「形状を、「三角形の集まり」として記述すること」です。
つまりは、「3つの点をひとまとめにして扱う」ことが、三角形の塗りつぶしのためには、必須です。
そこそこ大変な改造になるかと思いますが、立体図形の座標データを手書きで書けているのであれば、自力でも類推でやれるかも?と思います。

実のところ「塗りつぶし自体は3Dとは関係ない(テクスチャのない単色ならなおさら関係ない)」ので、
一度3Dから離れてまずは
「2Dで三角形を描く仕組み(これは、たぶんかなり簡単です。効率化の余地はそれなりに深いと思います)」
「2Dで三角形を塗りつぶす仕組み(上がしっかりできていれば、これはほかの人のtri-fillerが利用できるようになっていると思います)」
だけ実際に書いて試してみるのもよいかもと思います。

Last edited by KimiruHamiru (July 16, 2025 08:33:01)

KimiruHamiru
New Scratcher
500+ posts

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

chutaro5978 wrote:

3dについてわかりやすく解説してくれている作品や記事などがあったら教えてください。3dの勉強がしたいです。
だいぶ時間が経ってしまいましたが、
「3Dについてわかりやすく解説してくれている作品」として、

MathMathMath氏の
「3D Tutorial」
Part1: https://scratch.mit.edu/projects/406896730/
Part2: https://scratch.mit.edu/projects/408503000/

は、かなりよさそうです。
「MathMathMath氏のチュートリアルを参考にした」というフレーズは3D作品の「メモとクレジット」でよく目にする気がします。
上の2つはScratch2.0時代に作ったチュートリアルをScratch3.0用にまとめなおしたもののようです。

あまり知られてないようですが(私はついさっき知りました)
@sktoi4氏の日本語訳
Part1: https://scratch.mit.edu/projects/888546067/
Part2: https://scratch.mit.edu/projects/894506042/
もあります。
「ブロックが英語版の表記のまま」、「リンクが英語版へのリンク」、とかいくつかツッコミはありますが、本文はしっかり訳されていると思います。

ほかに、
MathMathMath氏がPart2の「メモとクレジット」で触れている
YouTubeチャンネルの「3Blue1Brown」
(日本語版は「3Blue1BrownJapan」)
は、
・3Dに関係してくるのは「線形代数( Linear Algebra )」の部分のみ
・理解するための要求が高め
なのですが、個人的には「説明がすごく丁寧で正確(あと、おしゃれ)」という評価(私はまだ全部は見てませんが!)
なので
「チュートリアル完全に理解した」人とか、「高校の数学はB以上楽勝!」な人とか「背伸びしたい」という人とか
「3Dプロジェクトを書くことに慣れてきたあと、自分が書いたものか何だったのか、改めて知りたくなった」という人とか、
に、よいかもと思います。
KimiruHamiru
New Scratcher
500+ posts

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

3Dの記事、チュートリアル、というと、
個人的には、

・「-100,0,0」みたいなデータを、どうやって用意するか(=モデリング)の情報
・データの持ち方の情報(定義ブロックの引数に数字を書いていくのではなく、リストに全部突っ込んでおくとか、その場で計算で作るとか)

が欠落していること、つまりは

・「立方体書けた!」の後、道を見失うこと
・「データ作るのが大変すぎるからもう無理!」と思ってしまうこと

に、大きな問題を感じています(個人的には乗り切ったつもりですが、この部分ために、これまで何度も挫折(数年単位の停滞)をしています)。
何とかしたい(何とかしてよ)とは思っているのですが、
何かいい道があるかどうか、チュートリアルの類が存在しているかどうか、現時点ではわかりません。

Last edited by KimiruHamiru (Aug. 4, 2025 20:34:57)

Powered by DjangoBB