2018年01月11日

ビットマップペイントツールのチュートリアルをやってみた その112 3dsmax 2017

引き続きMAXScriptマニュアルに載っている「チュートリアル-ビットマップペイントツールを9つの簡単なステップで作成する」 の続きを考えて見たい。

前回の方針の元にメッシュのエッジの最大長を求めて、その値とブラシ半径から「maxFaceRadius」を求めるファンクションを作ってみた。

fn edgelength e obj =
(
	verts = (meshop.getVertsUsingEdge obj e) as array
	v1 = meshop.getvert obj verts[1]
	v2 = meshop.getvert obj verts[2]
	d = distance v1 V2
)

fn getMaxFaceRadius = (
	theMesh = snapshotAsMesh pt.theObj
	maxlength = 0.0
	edgecount = theMesh.edges.count
	for i = 1 to edgecount do (
		l = edgelength i theMesh
		if l > maxlength then  maxlength = l
	)
	br = ParticlePaint_Rollout.BrushSize.value
	pt.maxFaceRadius = sqrt((maxlength^2+3*br^2)/3)*1.01
)

このファンクションを実行する前提はptにobjectPaint構造体がセットされている事と、「pt.theObj」にペイント対象のオブジェクトがセットされていること、「ParticlePaint_Rollout.BrushSize」コントロールに値がセットされている事だ。

続きはまた次回。

maxまとめページ



take_z_ultima at 11:30│Comments(2)3ds Max | CG

この記事へのコメント

1. Posted by ブンサダカ   2018年01月14日 00:51
どの記事すごいな〜 いろいろ勉強にさせてもらってます!
今、虫パーティクルの羽全体から鱗粉が綺麗にspawnさせる方法がないか模索してるのですが、dataオペレータを使わないでやるのは限界がありそうなのでちょっと挫折気味ですw いろいろ参考になるブログありがとうございます!!
2. Posted by take_z   2018年01月14日 18:40
コメントありがとうございます。
システム自体も大規模でいろんな仕組みが次々追加されていて、何の目的で付加されたかもわからないパラメータもあったりw互換のために残っている機能があったりで、思い描いていた通りの結果を得るのは本当に大変ですよね。

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 

Archives