snapshotasmesh

fn depthtoVertColor source target dist =
(
local rm = raymeshgridintersect()
rm.initialize 10
rm.addnode target
rm.buildgrid()
local sourceMesh = snapshotasmesh source
local targetmesh = snapshotasmesh target
for i=  1 to sourcemesh.verts.count do
(
local n = getnormal sourcemesh i
local p = getvert sourcemesh i
local hit = rm.intersectray (p+n*dist) -n false
local height = 128
if hit> 0 then
(
local index = rm.getclosesthit()
local f = rm.gethitface index
local b = rm.gethitbary index
local vi = getface targetmesh f
local v1 = getvert targetmesh vi.x
local v2 = getvert targetmesh vi.y
local v3 = getvert targetmesh vi.z
local worldpoint = v1*b.x+v2*b.y+v3*b.z
local d =distance p worldpoint
local height = ((d/dist)*0.5+0.5)*256
-- print height
)
source.editablepoly.setselection #vertex (#(i) as bitarray)
polyop.setvertcolor source 0 source.selectedverts (color height height height)
)
rm.free()
completeredraw()
)
맥스의 유용한함수는 mesh모드의 정보를 가져와야하는경우가 많음.

mesh모드의 정보를 $.mesh 로 가져오면 로컬스페이스임.



오브젝트 행렬을 이용하여 월드스페이스로 구성해보았는데, 오차가 생길 여지가 더 있었음. (pivot이라던지.. pivot 정보를 임의로 수정한경우 resetxform 하지않으면 vert의 포지션에 반영안됨)

맥스 내부의 in coordsys *** 란 함수가 있긴 한데, in coordsys world getvert obj.mesh 1은 동작하지 않는것으로 보임.
 

그럼 클론노드를 생성한 후 resetxform 을 해야하느냐.

 클론노드 생성에 따른 데이터 추출을 업데이트 한번에 할 수 없는 상황이 생길때도 있으니까 애매함.


그럴때 쓰는 함수가 snapshotasmesh

trimesh 인스턴스를 월드스페이스로 반환함.

이걸 알았으면 맥스 스크립트 삽질의 20%는 줄었을텐데...


덧글

댓글 입력 영역



메모장

Junhyuck Park
(PN/pakdragon,pakk)
MALE E-mail:pakdragon57@gmail.com