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

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

新規登録して質問してみよう
ただいま回答率
85.39%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Minecraft

Minecraftは、Mojang Studios開発の3次元サンドボックス型のゲームです。プレイヤーは3Dのブロックで構成された環境で自由にプレイすることが可能。特定の目標がなく、ユーザーによってさまざまな遊び方を楽しめます。

Q&A

1回答

455閲覧

不規則な凹凸のある立体の生成アルゴリズムについて

meronobu

総合スコア7

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Minecraft

Minecraftは、Mojang Studios開発の3次元サンドボックス型のゲームです。プレイヤーは3Dのブロックで構成された環境で自由にプレイすることが可能。特定の目標がなく、ユーザーによってさまざまな遊び方を楽しめます。

0グッド

0クリップ

投稿2023/07/06 05:18

実現したいこと

・不規則な凹凸のある立体の生成アルゴリズム

前提

添付した画像の島のようなものを完成後のイメージとしているのですが、
いまいち実装の考え方がまとまりません。
どのような考え方をすれば実現できるのでしょうか?

また、添付した画像の赤丸で囲っているような、「同一のY軸で複数の標高値」があるパターンの実現についても考え方を教えてほしいです。

※Unityなどを利用する予定ではないため、「Unityのこのライブラリを使う」などではなく、あくまで考え方をご教授ください。

イメージ説明

試したこと

仮定:x=16, y=16, z=16

実際にこのような島を作る場合。
①、中点変位法や2Dパーリンノイズを用いて島の標高を格納した配列を作成。
=> x*z=256サイズの標高の配列
②、①[x][z]のインデックスにあたる標高値をY軸の頂点として、Y軸の底辺までループ。

上記のような手順を踏めば立体を上から見た場合の平面上の凹凸を再現できると思うのですが、
添付した画像の赤丸で囲っているような、「同一のY軸で複数の標高値」があるパターンを再現できません。
上記の方法だと、側面は必ず直線になってしまいます。

3Dパーリンノイズも試してみたのですが、アリの巣のような正しく3D状のノイズでしたので
用途が意図とあっていないとの所感でした。

要約

質問の観点が間違っているのかもしれませんが、
現状、わからないところが分からないに近しい状況です。

本質的な質問の意図としましては、
不規則な凹凸のある立体の生成のアルゴリズム or 考え方を求めさせてほしいです。

また、「考え方がそもそもおかしい」場合、
後学のために指定いただけると幸いです。

ご回答のほど、よろしくお願いします。

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

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

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

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

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

guest

回答1

0

漠然としていて,方法論の良し悪し(「欲しいものとのマッチング具合」とでもいうか)が見えないですが…

おそらく,「最終的に欲しい結果に対して,Height-Field では不足」という話かと思うので,全く別の方法論よりは
「 Height-Field に基づき生成した塊を出発点として適当に細工する」という方向性が楽なのではないでしょうか.

すなわち,後から側面を適当にランダムに削り取るか,あるいは付け足す等すれば良いのではないでしょうか.
あるいは

標高値をY軸の頂点として、Y軸の底辺までループ

という処理の段階でボクセル(?)の有無を乱数あたりで決める等すれば良いのではないかと思えます.((x,z)が「側面」である場合に)

投稿2023/07/06 05:40

編集2023/07/06 05:42
fana

総合スコア11902

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

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

fana

2023/07/06 05:53

「そもそも自然ってのは何でこういう形になるのか」という理屈(?)を模して地形を生成するような話も世の中にはあるんじゃないかな. そういうのを探してみても面白いのかもしれない.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.39%

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

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

質問する

関連した質問