問題タブ [procedural-generation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 「ランダムに見える」シーケンスジェネレーター
これを行う良い方法が思い浮かびません。可能であれば、助けていただければ幸いです。
残念ながら、そこまで行っていないので、まだ投稿するコードがありません。
0 ~ 999の範囲の 3 つ (またはそれ以上) のパラメーターから一連の値を生成する必要があります。
値は、指定された入力に対して常に同じでなければなりませんが、ランダムに見えるように、上限と下限の間に公平な分布が必要です。
例えば:
これらはかなり高速に生成する必要があります。つまり、 Web ページの読み込み中に100 から200を顕著な遅延なしで生成できる必要があります。
このメソッドは、C# だけでなく JavaScript でも実行できる必要があります。それ以外の場合は、おそらく CRC32 または MD5 ハッシュ アルゴリズムを使用します。
それが役立つ場合、これは手続き型生成ルーチンの一部として使用されます。
以前にも質問してみましたが、説明の質が悪くてがっかりしたと思います。
これが悪い言葉である場合は、申し訳ありません。その場合はお知らせください。詳しく説明します。
助けてくれてありがとう。
javascript - three.js の SphereGeometry にハイトマップを適用する
[編集:ライブの例と付随するコードについては、この jsfiddle を参照してください]
three.js を使用して、顕著な特徴を持ついくつかの天体をレンダリングしようとしています。
残念ながら、threejs で球状の高さマップを適用する方法の例は提供されていませんが、高さマップが平面に適用される例はあります。
上記の例を使用して、 a のSphereGeometry();
代わりに aを使用するように変更しましたPlaneGeometry();
明らかに、球のジオメトリは平面のジオメトリとは大きく異なり、結果をレンダリングすると、球はテクスチャの平らな部分として表示されます。
平面の高さマップ コード:
今、解決策は比較的単純だと思います。for ループで平面の 2 次元座標にマッピングする代わりに、3 次元空間で球の表面座標を見つける必要があります。残念ながら、私は 3D 数学の専門家ではないので、この時点でかなり行き詰っています。
球に適用された高さマップの例とすべてのコードは、この jsfiddleにまとめられています。更新されたjsfiddleは変更された球体を示していますが、高さマップ データの代わりにランダム データを使用しています。
球の 3D ポイントを歪めてこれらの表面の詳細を生成できることは事実ですが、高さマップを使用して行いたいと思います。この JSFiddle は私が得た限りです。ポイントをランダムに変更して球体に岩のような外観を与えますが、明らかにあまり自然に見えません。
編集: 以下は、高さマップ データを球体にマップするために実装したい必要なロジックです。
データを球にマッピングするには、単純な球座標系 (経度 φ、緯度 θ、半径 r) からデカルト座標 (x、y、z) に座標をマッピングする必要があります。通常の高さマッピングで (x, y) のデータ値が z にマッピングされるように、(φ, θ) の値を r にマッピングします。この変換は次のようになります。
パラメータ Rdefault と Rscale を使用して、球のサイズとその高さマップを制御できます。
editor - Unity3d。パラメータを使用して実行前にプレハブをインスタンス化する
最近unity3dを勉強し始めました。
エディターでいくつかのもの (木のプレハブで作られた森) をプロシージャルに生成し、ライティングをベイクしたいと思います。そのため、実行前にインスタンス化する必要があります。
この記事は、実行前に何かを生成する方法を示すのに適していました
http://www.scriptocalypse.com/?p=102&cpage=1#comment-258
要約すると、カスタム ゲームオブジェクトをゲーム オブジェクト メニューに追加して、実行前にインスタンス化できるようにする方法を示します。
ただし、クリックするメニューオプションしかありません。変数をもっと制御できるようにしたいので、たとえば、半径、強度などを設定してから生成ボタンをクリックします。何か案は?
スクリプトのパラメーターを変更するだけでこれを実行できることはわかっていますが、Unity が通常動作する方法のようなグラフィカル インターフェイスは、長期的にはより高速になると思います。
algorithm - すべてのシンプレックス ノイズ アルゴリズムに順列と勾配テーブルがあるのはなぜですか?
シンプレックス ノイズを約 1 か月間実装しようとしてきましたが、シンプレックスを使用して必要な計算量を削減し、勾配側の安全な電力を削減するというアイデアを理解しています。ただし、これを任意の言語に実装すると、ミッション インポッシブルのように思えます。
私が見つけたすべての、すべての、すべてのコード、私が読んだリソース、どこでも、コードにはGテーブルとPテーブルがあるようです。いくつかのグーグルと周りの質問から、それらが順列と勾配テーブルであることを知りました。彼らは何をしますか?なぜそれらが必要なのですか?
私の現在の考えでは、順列テーブルにはランダムな値が含まれているだけなので、実行時に計算する必要はありません。
例:
algorithm - なぜシンプレックス ノイズは、従来のパーリン ノイズよりも *多くの* アーティファクトを持っているように見えるのですか?
Stefan Gustavson のシンプレックス ノイズに関する優れた論文を読みました。その中で次のことが約束されていました。
シンプレックス ノイズには顕著な指向性アーティファクトはありません
「古典的な」パーリンノイズとは対照的です。私は興奮してそれを実装し、反対のことが真実であるように見えることを知りました。クラシック ノイズにはアーティファクトが見られますが、主軸に対して 45 度に配置されたシンプレックス ノイズにも少なくとも同数のアーティファクトが見られます。ノイズをステップ関数にマッピングすると、特に顕著になります。
私の実装に問題がないことを確認するために、他の誰かの JavaScript 実装を使用しました。いくつかの画像を比較してください:
- クラシック ノイズとシンプレックスノイズ
- クラシック ノイズ ステップとシンプレックスノイズ ステップ
そして、ここにそれらすべてを含むギャラリーがあります。最後の画像で、水平/垂直から 45 度の位置にある境界線を探します。彼らはいたるところにいます。必要に応じてそれらのいくつかを強調することができますが、それらは私にとって本当に明白に思えます. (また、古典的なノイズ画像にもそれらが見られます。)
編集: より定量的にするために、100 万のランダム ポイントをサンプリングし、各ポイントについて、クラシック ノイズとシンプレックス ノイズの両方の勾配を数値的に計算し、xy 平面に投影された勾配の方向のヒストグラムを取得しました。方向性アーティファクトがなければ、グラフは平坦になります。しかし、クラシック ノイズとシンプレックス ノイズの両方が 45 度ごとにスパイクすることがわかります。
これはシンプレックス ノイズ アルゴリズムの問題ですか? それは修正できるものですか?それとも、これが問題だと思うのは私だけですか?
flash - actionscript 2 で無限/巨大な世界を扱う
actionscript 2 で最小限のラグで無限/巨大なプロシージャル生成ワールドをどのように実現していますか? たとえば、Terraria や Minecraft などのゲームで。このような巨大な世界を処理するにはどうすればよいでしょうか?
明らかに、すべてのブロックをループしてそのように移動してもうまくいきません。ブロックを 50x50 の「チャンク」に配置してから、各チャンクを移動しようとしましたが、結果は本来あるべきほど滑らかではありません。
プレイヤーが近くにいない場合、マップのセクションを完全に無効にする方法はありますか? それらを単にメモリに保存し、必要なときにロードすることは可能でしょうか?
どんな助けでも大歓迎です、ありがとう!
java - Java の 2D テレイン ジェネレーターに問題がある
何らかの理由で、ブロックが同じ位置にレンダリングされ続けます。誰でも私を助けることができますか?