2007年04月08日

XSIスクリプト: ApplyVertexColor

XSIの頂点カラーはペイントツールでしか設定できないのが困るという話を友人がしていたので、 スクリプトで対応してみた
使い方は、ポイントを選択した状態でスクリプトを実行してください

AppyVertexColor.xsiaddon

 

'
' 選択されたポイントの頂点カラーを数値で設定する
'
' ポイントを選択した状態でスクリプトを実行する
'

ApplyVertexColor()

sub ApplyVertexColor()
 set oRoot = Application.ActiveProject.ActiveScene.Root
 set oProp = oRoot.AddCustomProperty("ApplyVertexColor_GUI")

 set oParamR = oProp.AddParameter2("Color_R",siDouble,1,0,1,0,1,0,siPersistable)
 set oParamG = oProp.AddParameter2("Color_G",siDouble,1,0,1,0,1,0,siPersistable)
 set oParamB = oProp.AddParameter2("Color_B",siDouble,1,0,1,0,1,0,siPersistable)
 set oParamA = oProp.AddParameter2("Color_A",siDouble,1,0,1,0,1,0,siPersistable)

 set oLayout = oProp.PPGLayout
 set oColorPram = oLayout.AddColor("Color_R", "Color", true)

 InspectObj oProp ,,"ApplyVertexColor",simodal
 if Err.Number = 0 then
  ApplyVertexColor_Evaluate oParamR.Value ,oParamG.Value ,oParamB.Value ,oParamA.Value
  deleteObj oProp
 else
  deleteObj oProp
 end if 
end sub

sub ApplyVertexColor_Evaluate(R,G,B,A)
 SelectObjectFilter
 set oMesh = Selection(0).ActivePrimitive.Geometry

 SelectVertexFilter
 aPnt = Selection(0).subElements

 set oVColorProp = oMesh.VertexColors(0)

 aVColor = oVColorProp.Elements.Array

 for i=0 to UBound(aPnt, 1)
  set oSamples = oMesh.Points(aPnt(i)).Samples
  for j=0 to oSamples.Count-1
   aVColor(0, oSamples(j).Index) = R
   aVColor(1, oSamples(j).Index) = G
   aVColor(2, oSamples(j).Index) = B
   aVColor(3, oSamples(j).Index) = A
  next
  oVColorProp.Elements.Array = aVColor
 next
End sub

 



この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。