まとめ
私はハイトマップからすばやくタイルを生成する機能が必要でした。ハイトマップは本質的にグレースケールの画像です。メッシュの頂点の「z」値を表す「ピクセル」値を考えると、それらのz値を適用すると、メッシュが「風景」に変換されることが想像できます。
このことは、OpenScadのテクニックをさらに洗練したものに過ぎません。
私は風景に見えるものにこのテクニックを適用して強調していますが、フォントのレンダリングにも適用しています。OpenScadでフォントを作るにはいくつかの方法があります。1つは、「ビットマップ」を使用して、各ピクセルをキューブとして表現して高さマッピングを行う方法です。
別の方法は、フォント情報を使用し、アウトラインを使用して実際にポリゴンを描き、linear_extrude() でそれらを拡張することです。
しかし、3つ目の方法は、フォントのアウトラインを.dxfファイルにエクスポートし、そこからlinear_extrudeで読み込むことです。
ここでできることは、フォントを取り、各文字のグレースケール画像を生成し、基本的にOpenScadコードの形式にします。そして、これらの画像をランドスケープのようにメッシュに適用すると、押し出されたフォントができます!
この一般化されたテクニックの素晴らしいところは、何にでも使えるということです。このルーティンでは、サイズと解像度を完全にコントロールできます。例えば、同じ基本的なグレースケールの画像を使用すると、48×48 mmで印刷し、1 mmあたり4つのファセットの解像度で印刷できます。これは、.25 mmの層の解像度のマシンで印刷する場合に最適です。かなり滑らかに印刷されます。一
ここにある写真は、そのテクニックが地形とキャラクターの両方に適用されていることを示しています。
メッシュレンダー.scadファイルで見ることができる2つのルーチンがあります。
シェル_エクストルード_ハイト_マップ() - ハイトマップの情報が単一の値で表されている場合に使用されます。
シェル_エクストルード_カラー_マップ() - あなたのハイトマップ情報がまだグレースケールですが、トリプレットで表されている場合に使用されます。
あ、そうだ、そしてこのルーチンのパラメータの1つ:solid=true
つまり、プロトタイピングをしている間は「solid=false」と言えば、単に多角形のサーフェスが生成されます。そして、いじるのを終えたら「solid=true」と言えば、適切な2次元のソリッドが得られ、それから「F6」を押して散歩に出ることができます。
わかるけど、たくさんの言葉だよね!でも、可愛い写真を見てください!! 64×64の解像度の山のシーンはレンダリングに5時間かかりました。48×48は約1.5時間でした。
注意:このテクニックを使って単独の文字を簡単に生成できますが、実際に写真のように大量に生成すると問題があります。構造が2次元ではないのです。後ほど一般的なテキスト処理の面で改善していきたいと思っていますが、基本的なハイトマッピングテクニックは変わりません。