올려주신 것 보았는데요.. 스케일로 접근하시면 안될것 같아요.
스케일로 접근시 x.y.z 축으로 밖에 접근방법이 없어서.. 오브젝트스페이스의 방향을 따르려면... 편집하는 오브젝트의 피봇을 바꾸어 주어야 하는문제가 생길것 같습니다.. 피봇변경시 예기치 않은 문제가 많이 생기지 않을까 싶기도 하구요..
일단, 아래 스크립트로 원하시는 작업을 할 수 있지 않을까 싶긴한데요...
로테이션값을 노멀백터로 바꾸는법과.. 노멀백터값을 회전시키는 방법을 몰라서..어쩔수 없이.. 플랜생성하여..
노멀값 읽어들이구.. 다시 삭제하는 방식으로 만들었습니다.
누구 아시는분 계시면.. 좀 갈켜주세요 ^^ㅋ
아래 스크립트와 스샷 첨부합니다.
--------------------------------------------------------------------------------------------------------
스크립트 - -- 에디트폴리모드에서 폴리곤 선택한 상태로 실행하면 됩니다.
a=$box001 -- 오브젝트스페이스로 지정할 오브젝트. box001의 좌표계의 x,y,z 축기준으로 작업할 것
select_D = 3 -- x축은1 , y축은2, z축은3
aa=polyop.getfaceselection $
bb=aa as array
--------------------------------------------------------------오프셋 계산관련..
tempbf=[0,0,0]
for i=1 to bb.count do tempbf += polyop.getfacecenter $ bb[i]
tempbf /= bb.count --평균위치 초기값.
------------------------------------------------------------------------------
temp_plane=plane()
case select_D of
(
1:
(
rotate temp_plane (angleaxis 90 [0,1,0]) --X
converttopoly temp_plane
)
2:
(
rotate temp_plane (angleaxis 90 [1,0,0]) --Y
converttopoly temp_plane
)
3:
converttopoly temp_plane --Z
)
rotate temp_plane a.rotation
tempDR=polyop.getfacenormal temp_plane 1
delete temp_plane
polyop.movefacestoplane $ aa tempDR 0 ------------------- 오프셋초기값.
----------------------- 아래 부분은 오프셋 관련입니다. 테스트해보니 완벽하지 않네요. 수정해서 쓰시면 될듯해요.
tempaf=[0,0,0]
for i=1 to bb.count do tempaf += polyop.getfacecenter $ bb[i]
tempaf /= bb.count --평균위치값.
polyop.movefacestoplane $ aa tempDR (distance tempbf tempaf) ----------------- 오프셋값 보정.
------------------------------------------------------------------------------------------------------------------
스샷
X축
Y축
Z축
첫댓글 감사합니다 이제야 확인했네요... movefacestoplane메소드를 쓰는 방법이 있었네요 참고하겠습니다 .ㅎㅎㅎ