竹編みっぽいもの


* スクリプトは data\take_ami.txt

[1] くねくねした紐をつくる

正弦波の振幅を制限してくねくねした紐をつくる。
p curve np.linspace(-1,1,100) T np.clip(np.sin(T*np.pi*5),-0.025,0.025) [0]*len(T)
p t 0 0 0.25 2 ・・・ z 方向に押し出す
surface       ・・・ メッシュ化する
s 2.5 1 1     ・・・ x 方向に伸ばす


[2] 逆相のくねくね紐をつくる

t 0 0 0.125    ・・・ z 方向に 0.125(くねくね紐の幅の半分)移動
r 180 0 0 2   ・・・ x 軸周りに 180° 回転したコピーを作成
t 0 0 1 5    ・・・ 逆相の紐を 5 組に増やす
centering      ・・・ センタリグ
c 200 200 255    ・・・ 薄い青にペイント
save tmp.ply     ・・・ 10 本の紐(逆相 5 組, 横糸のみの半分布)をセーブ


[3] 横糸と縦糸を組み合わせて布にする

l tmp.ply     ・・・ 横糸のみの半分布をロード
r 0 90 0     ・・・ y 軸周りに 90°回転。縦糸にする
c 128 128 255  ・・・ 濃い青にペイント
merge        ・・・ 横糸とマージ
s 1 1/100 1   ・・・ y 方向を 1/100(テキトー)につぶす


正弦波をクリッピングしない方が味があったかも・・・
data\take_ami2.txt


l take_ami2.ply  ・・・ 素材とする ply をロード
i         ・・・ サイズ情報を取得
(例)
x 1.000000 -0.500000 - 0.500000
y 0.019997 -0.009999 - 0.009999
z 1.000000 -0.500000 - 0.500000

s 2.1 1 2.1     ・・・ x, z の広がりが -1 ~ 1 よりちょっと広くなるようにスケーリング
save tmp.ply    ・・・ スケーリングしたメッシュをセーブ
python src\prune_mesh.py tmp.ply 5 1.1 ・・・ 外接円半径 1.1 の 5 角形で剪定

data/dodecahedron.txt をコピーし, 以下(2か所ある)を変更して実行する
(変更前) polygon 5 1 -0.01
 ↓    ↓
(変更後) l tmp_pruned.ply