Vectorworks 気楽にscript テクスチャの違和感を減らす
テクスチャは画像やシェーダを使用します。木工や石などのテクスチャを複数使っていると、同じ模様になって如何にもCGになってします。一方で複数のテクスチャを似た感じで作成するのは手間がかかるので、ざっくりとした3Dには不要です。
作成したスクリプト
今回作成したスクリプトでは、複数の3Dのテクスチャのオフセット値やスケールは若干変更することで、違和感を少しでも取り除くことが目的です。決してこれを使ったらフォトリアルのものができるとかではありません。
if 文なども使っていないので、2D図形で実行してもスルーされます。
import random
def randomTexMove():
count = int(vs.Count(" (SEL=TRUE)")) #選択しているオブジェクトを数える
hand = vs.FSActLayer() #選択している中で一番上のオブジェクトを操作する
move = 0 #オフセットの値を最初は0にする
move = vs.IntDialog('オフセットの上限を設定', 500) #オフセットの変化の値を入力された数値に変える
angle = [-5,-4,-3,-2,-1,0,1,2,3,4,5,175,176,177,178,179,180,181,182,183,184,185]
for i in range(count): #選択図形文処理をする
vs.SetTexMapRealN(hand, 3 , 0 , 1 ,random.randrange(move)) #選択されているオブジェクトのオフセット値を変える
vs.SetTexMapRealN(hand, 3 , 0 , 2 ,random.randrange(move)) #選択されているオブジェクトのオフセット値を変える
vs.SetTexMapRealN(hand, 3 , 0 , 3 ,random.uniform(0.8, 1.2)) #選択されているオブジェクトのオフセット値を変える
vs.SetTexMapRealN(hand, 3 , 0 , 4 ,(random.choice(angle))*(3.14/180))
vs.SetObjectVariableBoolean(hand, 524, False)
vs.SetObjectVariableBoolean(hand, 524, True)
hand = vs.NextSObj(hand) #次のオブジェクトへ
randomTexMove()