카메라 좌표(NDC)

4730 단어 VEXHOUDINIWrangle

카메라 화각 상자



카메라의 공간은 NDC(normal device coordinates)라고 불리며, 카메라에서 보고 X, Y축은 0~1, Z축은 마이너스를 사용하여 카메라의 거리를 나타낸다
박스의 중심이 기점인 채이므로 {0.5, 0.5, 0}에 오프셋 해 스케일을 걸 수 있도록 좌단을 기점으로 변경



wrangle
vector offset = {0.5, 0.5, 0}; //カメラの縦と横が0-1に対してカメラの中心を基点(0.5,0.5)に
vector cameraScale = set(ch("camera_X"), ch("camera_Y"), 1);
if (@group_near)  @P = set(@P.x, @P.y, ch("near")*-1); //near(Z軸)の距離
if (!@group_near) @P = set(@P.x, @P.y, ch("far")*-1);  //far (Z軸)の距離
vector xformpos = @P *  maketransform(0,0, offset,{0,0,0},cameraScale,{0,0,0}); //縦と横の大きさ
@P = fromNDC(chs("camera_path"), xformpos); //カメラの空間にボックスを変換

카메라 외부의 포인트 삭제



카메라 외부의 포인트나 프리미티브를 삭제하면 이미터의 파티클 수를 줄일 수 있는 등 작업의 경량화에 도움이 된다



한 번도 카메라(애니메이션)에 들어 있지 않은 포인트 삭제



캐시가 무거울 때 빨리 가볍게하는 방법

i@insideCamera = @Frame; // カメラ内のポイントにフレーム数を設定
vector offset = {-0.5, -0.5, 0}; //カメラの縦と横が0-1に対してカメラの中心を基点(0.5,0.5)に
vector xformuv = @uv *  maketransform(0,0, offset,{0,0,0},{1,1,1},{0,0,0}); // カメラスケールをUVに適用
if ( xformuv.x < ch("camera_X")*-0.5 || xformuv.x > ch("camera_X")*0.5 ) i@insideCamera = 0; // 左右の画角外を後で削除できるように目印
if ( xformuv.y < ch("camera_Y")*-0.5 || xformuv.y > ch("camera_Y")*0.5 )  i@insideCamera = 0; // 上下の画角外を後で削除できるように目印
if ( @uv.z >= ch("far") || @uv.z  <= ch("near"))  i@insideCamera = 0; // 手前と奥の範囲外を後で削除できるように目印

HIP 파일

좋은 웹페이지 즐겨찾기