기타

카메라를 플레인 오브젝트에 딱 맞출수 없나요??

by 눈물조각 posted Sep 25, 2013 Replies 2
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
Extra Form

1280x720 사이즈의 플레인 오브젝트를 만들어서 에펙에 가져가서 쓰려고

플레인 오브젝트 사이즈와 렌더설정창 해상도 1280x720으로 맞추긴 했는데..

탑뷰에서도 그렇고 카메라를 만들어도 그렇고

이 오브젝트가 화면에 꽉차게 만들려고 하면 그냥 눈대중으로 카메라 Z축으로 이동하는 방법밖에 없는데..

혹시 S나 H키처럼 누르면 오브젝트가 화면에 꽉차도록 한번에 만드는 방법 없을까요?

  • ?
    엘라스틱마인드 2013.09.25 13:19

    거꾸로 생각 하면 렌더된 화면이 1280 720 이니까 백그라운드 오브젝트에 넣으면 되죠.

    카메라가 움직이는 중에도 카메라에 강제로 맞추려면 플랜의 크기가 아니라 

    카메라의 화각과 카메라와 오브젝트간의 거리가 직각 삼각형을 이루므로 피타고라스의 정리를 이용하면 됩니다.


    자료실에 보면 제가 옛날에 만들어둔 플러그인이 있을 겁니다.

  • ?
    귤귤이 2013.09.25 13:43

    저도 자주 사용하기에 예전에 작성한 스크립트인데,

    아래 내용을 Python Generator 하나 꺼내서 작성해넣으시고

    카메라 밑에 하이라키 해주시면 잘 될겁니다.


    import c4d
    import math

    def psize(r,z):
        return math.tan(r/2.0)*z*2.0

    def main():
        op[c4d.OPYTHON_OPTIMIZE]           = False
        plane =  c4d.BaseObject(c4d.Oplane)
        plane[c4d.PRIM_AXIS]               = 5
        plane[c4d.PRIM_PLANE_SUBW]         = 2
        plane[c4d.PRIM_PLANE_SUBH]         = 2

        cam   = op.GetUp()

        if cam is None or cam.GetType() != c4d.Ocamera:
            return plane

        planeZ = cam[c4d.CAMERAOBJECT_TARGETDISTANCE]
        op[c4d.ID_BASEOBJECT_ABS_POSITION] = c4d.Vector(0,0,planeZ)
        op[c4d.ID_BASEOBJECT_ABS_ROTATION] = c4d.Vector(0)
     
        camV   = cam[c4d.CAMERAOBJECT_FOV_VERTICAL]
        camH   = cam[c4d.CAMERAOBJECT_FOV]
        plane[c4d.PRIM_PLANE_HEIGHT]       = psize(camV,planeZ)
        plane[c4d.PRIM_PLANE_WIDTH]        = psize(camH,planeZ)
       
        return plane