그래픽 궁금증...특정 형태의 3D Object 를 그리기 위한 Vertex 좌표 도출방법
2013.02.02 11:42
질문이 제대로 된 건지 몇 번을 읽어봐도, 질문이 잘된건지 잘 모르겠네요. ㅡ,.ㅡ
예를들어,
"선풍기라는 Object 를 그리고 싶은데, 필요한 Vertext 들의 좌표를 JSON 형태로 제작하고 싶다."
라고 했을 경우...
음...어떻게 작업을 해야 받아볼 수 있을까요?
3D 로 그려야 좌표가 나올텐데, 그걸 그리려고 Vertex 들이 필요한건데...왠지 무한 루프에 빠진 느낌. -_-;;;
코멘트 13
-
꼬소
02.02 15:53
openGL에서도 vertex의 좌표는 절대 좌표계를 사용합니다.
기준이란게 없으면 vertex의 좌표가 나올 수 없죠..
보통 화면의 정중앙이 (0,0,0) 입니다..
그리고 JSON으로 표현은 절대 좌표계만 나온다면 어렵지 않겠네요...
-
김강욱
02.02 18:00
뭔가를 그리고, 그것으로 부터 좌표를 뽑아낼 수 있는 툴이 있을까요?
-
꼬소
02.02 20:21
어디에 그리느냐가 중요 하겠죠..
3D 툴을 이용하여 작업 하신다면 다 절대 좌표계가 마련 된 상태에서 작업하시게 되니 좌표는 쉽게 얻을 수 있겠죠..
-
소위 3D 모델링 도구들이 하는 일이 다 그거예요~ 요즘은 구글에서 무료로 배포하는 스케치업도 많이 써요.
-
JSON이용하실 거면 오픈스탠다드인 COLLADA를 이용하시면 편하실겁니다.
왠만한 3D 저작툴에서는 COLLDA로 익스포팅이 가능할겁니다.
XML 형태인 COLLADA니 손쉽게 JSON형식으로 변환도 가능할겁니다.
-
김강욱
02.03 12:52
흐미, 가영아빠님. IT 에 대해 모르시는 게 없으시네요~
-
예전에 웹아바타가 열심히 유행하던 시절에 웹서비스하는 프로그램 만들 때 같은 문제로 고민한 적이 있습니다.
브라우저 상관없이 뿌리기 위해서 ActiveX 배제하다보니
당초에는 JAVA에서 JSON으로 COLLDA를 받아서 뿌리려다가
나중에 플랫폼만 JAVA에서 FLEX로 바뀌어서 COLLDA를 받아서 3D캐릭터들을 뿌렸습니다.
-
파싱까지 직접 구현하려면 STL이 더 쉽지 않나요? 콜라다의 범용성이야 누구나 인정하지만, 프로그래밍으로 다루기에는 STL이 더 단순해서 좋더라구요. 사실 STL 포맷이 정보 자체가 워낙 제한적이어서 그런거지만요 ;;; 완전히 text로만 표현이 가능한 STL 포맷이 json하고 더 맞을거 같다고 생각되요.
-
익스포팅부터 고려하면 COLLADA가 제일 무난할겁니다.
익스포팅 받을 때, 애니메이션 까지 받으려면 텍스트 포맷을 지원하는 공개형식으로는 몇가지 밖에 없습니다.
그중에서 XML형식으로 뽑아주는 것은 COLLADA정도 겠고요, 거기다가 본을 심었을 때 스키닝까지 지원해주는 것도 COLLADA밖에 없습니다.
어떤 3D툴을 쓸지 모르겠지만, 산업표준이라면 3DS Max 정도일 텐데요. 여기서도 COLLADA를 지원해주고요.
익스포터를 개인이 만들면 모르겠지만 아니라고 한다면 뽑아낸 데이터를 파싱해서 특정포맷으로 변환하느니 아예 있는 익스포터에서 COLLADA를 뽑아서 그걸 XML파싱해서 원하는 형식으로 바꾸는게 쉬울 겁니다.
게다가 특정기능을 COLLDA로 뽑고 싶어서 익스포터를 만들때도 COLLADA는 소스가 많이 널려서 조금만 공부해도 원하는 데이터를 추가해서 뽑도록 익스포터도 만들기 쉽고요.
-
혹시 우선 뭔가 물체를 3D로 만드셔야 하는 상황이신가요?
테스트 하시기 위해서 3D툴로 뭘 만들어 보신다는 건 프로그래머입장에서는 큰 도전입니다.
그래서 제가 프로토타입 만들 때 사용하는 한가지 팁을 드리려는 건데요.
테스트 하실 요량이시라면 3DS Max를 구하세요. 3DS Max가 폴리곤 기반의 툴이라서 초보자가 익히기 좋습니다.
하루정도만 공부해도 선풍기는 만드실 겁니다. 게다가 산업표준이고요.
스케치업이나 Blender같은 무료툴을 이용하실 생각이시라면 단언하건데 무료에 현혹되지 마시고 과감히 포기하십시오.
스케치업의 경우는 아마추어 모델러들이 가끔 쓰던데 나중에 애니메이션을 추가할 때가 되면 기능이 형편없습니다. 없다고 보시는게 편합니다. 아마추어 모델러들도 리지드바디모델(집이라 던가 등등)들의 모델링이 쉬워서 이걸로 작업하고 나중에 혹시라도 결과물에 애니메이션을 줘야 하는 상황이 나오면 다시 변환해서 맥스 등에 올려서 애니메이션 키 잡습니다.
블렌더는 기능은 무궁무진하고 영화도 만들정도로 대단합니다만 그 UI의 난해성 때문에 전문 모델러들도 익숙해지는데 한두달 걸립니다.
그러니 테스트 동안엔 3DS Max Trial을 받아서 쓰시면 될겁니다.
그리고 3DS Max를 권한 이유는 프로그래머 입장에서 언뜻보면 복잡한 UI공부할 필요 없이 키보드Z(뷰포트에 오브젝트 꽉차게 중앙정렬해서 보여줌)만 누를 줄 알면 모델 생김새 볼 수 있고요, 우하단의 Pan버튼 눌러서 모델을 마우스로 돌려볼 수도 있고요, File > Load 와 File > Export 메뉴만 실행시켜도 원체 유명한 .ase라던가 꼴라다(.dae)라던가 등등 텍스트 형식으로 원하는 데이터를 뽑을 수 있기 때문입니다. 이 몇가지만 알아도 모델모양보고 출력하고 메모장같은 텍스트리더에서 불러서 데이터 잘 뽑혔는지 확인하는데 지장이 없습니다.
그리고 제일 중요한 것입니다만 3DS Max를 권한 또 다른 이유는 www.turbosquid.com 같은 곳(몇 곳 더 있습니다만 여기가 정리가 제일 잘 되어있습니다.)에 Max형식의 유무료 오브젝트들이 많기 때문입니다.
프로그래머가 뭔가 테스트 하려고 그때마다 모델러나 애니메이터 부르면 작업이 번거로와지죠.
그럴 땐 작업에 맞는 모델을 과감하게 사세요. 무료도 많이 있습니다.
선풍기의 경우 천정의 Fan입니다만 http://www.turbosquid.com/3d-models/fan-max-free/237109 가 있네요.
가장 간단한 테스트할 때는 애니도 없고 모델자체도 로우폴리곤이 좋습니다.
이 모델은 폴리곤이 1600개 남짓이네요. 버텍스도 1000개 미만이네요. 아주 가벼운 모델입니다. 가격도 무료고요. 텍스쳐까지 줍니다.
물론 더 간단한 모델들도 많이 있습니다. 버텍스 백단위 미만의 초 간단한 것들도 있습니다.
나중에 말씀하신 원하는 기능(JSON으로 받아서 모델을 띄우는 것)까지 성공하고 추가로 애니메이션 같은 것이 필요해서 기능추가하고 테스트 하실 때도 TurboSquid에서 간단한 애니가 들어간 무료모델들이나 상용 모델들을 받으셔서 이제 기능확장해나가시면 될겁니다.
-
김강욱
02.03 19:48
몰랐는데, 아이디가 업그레이드 되셨네요.
축하드려요.
번번히 느끼는 거지만, 대단하시네용~
이런 전문적인 조언에 진심으로 감사드립니다. 꾸뻑 ( _ _ )
-
축하 감사드립니다. :-)
Object라는게 position뿐 아니라 vector도 있어야 하는거니 그냥 vertext의 나열로는 의미가 없을거 같구요.
color나 texture 정보가 필요없다면, 가장 단순하게 STL 포맷으로 주고받는게 좋을거 같은데요.