
간단히 그래픽스에서 그려지는 것의 내용에 대해 정리해보기 위해 글을 쓴다.
한 면, 삼각형은 3 점으로 구성된다. 간단하게 생각하기 위하여 삼각형을 화면에 그린다고 생각하자.
삼각형의 3 점은 해당 좌표계에 적절히 배치되어 있을 것이다. Local Space
그런데 우리는 삼각형을 그리기 위해서는 3점을 World Space(월드 좌표계)에 위치시켜줘야 되는데, 이는 이동행렬을 곱해주어 정확한 월드 좌표계에 놓일 수 있도록 해준다. (이동 행렬을 안곱해주면 항상 원점(0,0,0)을 중심으로 3점이 배치가 되어 있을 것이다)
추가로 Scale, Rotate의 행렬을 곱해줘, 정점의 위치를 모두 바꿔준다. 그러나 Rotate 행렬을 해줄때는 Gimble Lock이라는 현상이 발생할 수도 있으므로, 사원수를 사용하여 계산 부담도 덜고, Gimbal Lock 현상도 없애는 이득을 볼 수 있다.
월드 좌표계에 정점의 배치가 끝났으면, 이제 해야 할 것은 바로 카메라의 배치이다. 카메라의 배치 또한 모델 배치와 비슷하며, 더 해줘야 할 것은 바라볼 방향과 UpVector를 설정해 주는 것이다.
이제 카메라도 설치가 완료되었다. 그러면 해줘야 할 것이 바로 화면에 그려주는 것이다
바로 3D -> 2D로 바뀌는 작업인 것이다.
이 방법에는 2가지가 존재하는데
1. 직교투영(평행투영)
2. 원근 투영이 존재한다.
적절히 계산.
위의 단계를 거치면 어떤 점이 화면에 보여야 되는지에 대한 설정이 끝난다.
이제 마지막으로 해줘야 할 것이 바로, 면에 대한 처리이다.
면을 처리한다는 것은 3점이 이루는 영역에 얼마만큼의 빛이 들어오는 지를 체크하는 것이라 할 수 있다.
자체 색과 빛과의 각도를 계산, 그 외에 반사정도 등등을 설정해주면, 점들이 이루는 영역에 얼만큼의 빛이 존재하는지를 알 수 있고 어떤 색을 띌 지를 알 수 있다.
따라서, 해당 점을 이은 도형의 영역 안에 존재하는 픽셀들의 색을 계산을 통해 얻은 색으로 바꿔주면 되는 것이다.
'프로그래밍' 카테고리의 다른 글
문자 출력하기 구현. (1) | 2012.10.11 |
---|---|
RTTI에 대한 글. (1) | 2012.07.20 |
그래픽스 몇가지 적어놓을 것들. (0) | 2012.07.05 |
쉐이딩. (0) | 2012.07.05 |
DX 텍스쳐 관리2. (0) | 2012.04.17 |

1: 좌표계 변환.... 흔히 Unity에서 heriarchy로 하기 위해 쓰는 변환이라는 것 같다.
2: Gimbal Lock
http://en.wikipedia.org/wiki/Gimbal_lock
행렬로 회전을 할때 생기는 현상이다. 한 축의 회전이 손실되는 현상.
이러한 현상 때문에 4원수를 쓴다.
'프로그래밍' 카테고리의 다른 글
RTTI에 대한 글. (1) | 2012.07.20 |
---|---|
DX 우리에게 그려지기까지... (1) | 2012.07.05 |
쉐이딩. (0) | 2012.07.05 |
DX 텍스쳐 관리2. (0) | 2012.04.17 |
게임 텍스쳐(이미지) 관리 (0) | 2012.04.13 |
주변색(ambient) - 광원의 위치와 무관하게 똑같은 양으로 모든 점에서 반사되는 색
확산색(diffuse) - 광원에 반사될 때 출력되는 가장 주된 색
반사색(specular) - 특정한 방향으로만 반사되는 색,
방출색(Emissive) - 메시 표면에서 자체적으로 방출되는 색.(광선검 같은거 구현할 떄 쓰는듯)
'그래픽관련' 카테고리의 다른 글
3dmax reference (0) | 2012.08.24 |
---|---|
Skin 기능 (0) | 2012.08.05 |
Sprite (0) | 2012.04.25 |
3D MAX에서 뼈대 설정해주기 (0) | 2012.04.08 |
3D MAX 하이 폴리곤에서 노말맵 뽑아내기 (0) | 2012.04.08 |
플랫 쉐이딩 - 면의 벡터를 가지고 음영을 처리하는 방법이다.
고로 쉐이딩 - 정점의 벡터를 가지고 정점의 밝기를 계산하는 방법이다.
퐁 쉐이딩 - 픽셀의 법선벡터를 가지고 픽셀의 밝기를 계산하는 방법이다.
'프로그래밍' 카테고리의 다른 글
RTTI에 대한 글. (1) | 2012.07.20 |
---|---|
DX 우리에게 그려지기까지... (1) | 2012.07.05 |
그래픽스 몇가지 적어놓을 것들. (0) | 2012.07.05 |
DX 텍스쳐 관리2. (0) | 2012.04.17 |
게임 텍스쳐(이미지) 관리 (0) | 2012.04.13 |

http://wtomandev.blogspot.kr/2010/03/character-animation-part-1-ideas-behind.html
http://wtomandev.blogspot.kr/2010/05/character-animation-part-2-implementing.html
http://wtomandev.blogspot.kr/2010/05/character-animation-part-3-animation.html
간단히 요약해 현재 애니메이션을 플레이하기 위해 사용되는 방법에는 2가지가 존재한다고 한다.
1. 각 뼈대에 Mesh를 부착하는 형태
이 형태는 Mesh간의 부자연스러운 경계때문에 거의 안쓰인다고 한다.
2. 각 vertex에 영향을 주는 뼈대를 설정 Vertex Blending
흔히 Blending을 쓰는 용어는, 서로 다른 2개를 자연스럽게 이어주는 말에 쓰는것 같은데. 이 경우에도 마찬가지다. 최대 영향 뼈대를 4개까지 설정할 수 있다.

스포주의
영화의 시작은 지구와 비슷한 환경에 우주선이 날아가는 상황으로 시작된다. 인간과 비슷하게 생긴 생물체의 등장과 함께... 인류와 비슷하게 생겼으면서도 이질감(?)이 느껴지는 생명체는, 특수한 용기에 담긴 음료를 마시는데, 이를 마시자 생명체의 몸이 분해가 된다.(DNA까지 보여주면서..).
생명체는 몸이 분해되기 시작하자 중심을 잃고 폭포 밑으로 떨어지게 되고, 그의 몸은 물 속에서 검은색 액체로 완전히 분해가 된다. 그 뒤, 그 분해된 세포들은 재창조를 시작하는 듯한 영상을 보여준다.(흩어진 검은 물질들이 다시 합쳐짐) (이 부분은 마치 강철의 연금술사에서 말하는 파괴와 재창조(?) 그런 비스무리한 것을 떠올리게함)
그 뒤 시간이 흘러 20xx년(79년이었나) 배경은 지구, 주인공인 쇼와 찰리(둘은 부부)는 세계 고대 문명의 벽화를 찾아다니는 일을 하고 있고, 그들은 발견한 고대 벽화로부터 공통점 한가지를 찾아낸다. 그것은 7개의 별(7개가 맞던가)을 표시하는 그림이었다. 그들은 천년이나 시대차이가 나고, 장소 또한 완전 별개인 고대 문명들에서 동일한 그림이 나왔다는 것을 "창조자로 부터의 초대장"이라고 생각을 하게 된다. 어떤 회사(회사 사장 이름이 '바커스')는 탐사팀을 만들어 두 박사와 함께 해당 행성으로 보낸다.
함선의 이름은 "프로메테우스". 약 20년의 시간이 걸린 끝에 프로메테우스 호는 목적지 행성에 도착하게 되고, 탐사선 안에서 수면을 취했던 탐사팀들은 수면상태에서 깨어나게 된다. 20년동안 그들을 관리해왔던 휴머노이드 "데이빗"은 탐사원들으 잠들어 있는 시간에 그들이 생각하는 "창조주"와 대화하기 위해 언어를 학습하고(찰리가 명령한듯 하다), 사람들의 기억을 엿보며 인간의 말을 따르지만 또한 인간을 관찰하는 듯한 행동을 보여준다.
그들이 찾은 행성은 대기 성분이 지구와는 비슷하지만, 독가스와 같은 위협적인 가스가 너무 많은 관계로 인간이 살 수 없는 공기를 가진 행성이었다. 그들은 행성에 진입해 인위적으로 만든 건축물 같은 곳 근처에 착륙한다. 그리고는 곧바로 수트를 입고 탐사를 시작하게 된다.
탐사팀은 곧바로 구조물 안으로 들어가 탐색을 시작하는데, 조금 깊이 들어가니 사람이 숨을 쉴 수 있을 정도의 대기가 형성되는 것을 발견한다. 그리고 더욱 깊숙이 들어가며 탐사를 하던 도중 데이빗이 스위치를 발견하고, 이것저것 누르더니 홀로그램이 발동된다. 그 홀로그램은 인간과 비슷하게 보이는 생물들이 무언가로부터 도망치는듯한 느낌을 주는 영상이었다. 그 영상에 비춘 생물을 따라간 자리에는 생물체의 죽은 시신이 있었는데, 탄소측정 결과 2천년 전에 죽은 것으로 판명되었다. (2천년 전에 죽은것이라면 그들은 인간을 관찰하고 있었다라는 말일지도?)
시신 근처에는 또 버튼이 있었는데, 휴머노이드 데이빗이 이 또한 작동시켜 문을 열게 된다. 문 뒤에 있는것은 수 많은 항아리들과, 인간의 얼굴처럼 생긴 하나의 거대한 동상이었다. 그들이 문을 열자 항아리에 있던 서리같은 것들이 녹기 시작하며 검은색 물체가 생기기 시작한다. 마침 불어온 태풍때문에 그들은 더 이상의 조사를 하지 못하고 시신의 머리부분만 챙기고, 데이빗은 항아리 한개를 챙겨 급히 함선으로 돌아온다. 그들이 다 돌아가고 그곳에 존재하던 지렁이들이 검은색 물체에 접촉하는 영상이 나온다.
함선에서 시신의 머리에 전기신호를 보내자, 머리가 부풀어 오르면서 터지게 되는데, 그의 머리에서 검은색의 물체가 흘러내리면서 폭발하는 것을 볼 수 있다. 그리고 머리 조직의 DNA를 검사한 결과 인간의 DNA와 100%일치하는 것을 보고 그들은 인류의 창조자를 찾았다며 기뻐한다. 데이빗은 몰래 가져온 항아리에서 어떤 검은 음료(초반에 나온것)를 자신의 손가락 위에 적은 양을 올려놓고, 찰리에게 가 이런 저런 얘기를 한다. 그 얘기중 이런 대사가 오고간다.
Q: 저를 만든 이유는 무었이라고 생각하시나요
A: 만들 수 있으니까
위의 질문에서는 어떻게 보면 인간의 이기적인 모습을 보여주는것 같았다. 자신의 창조의 이유에는 관심이 그렇게 많으면서, 정작 자신이 창조한 휴머노이드에게 해주는 대답은 무관심한 답변을 해주기 때문이다.
또한 이런 질문을 하기도 한다.
Q: 목적을 달성하기 위해서라면 어떤 짓이든 하실껀가요?
A: 어떤짓이든 해야지...
이 말을 들은 데이빗은 그에게 술을 주며, 자신의 손가락에 묻어있던 액체를 섞어 그에게 준다. 찰리가 대답을 다르게 했더라면...이라는 생각이 드는 아쉬운 장면이다.
-------요부분은 잘 기억이 안나요------
술을 마시고 쇼를 보로가게 된 찰리는 그녀와 창조주와의 허무한 만남에 대해 한탄을 한다. 그 와중에 쇼가 차고있는 십자가 목걸이를 언급하면서 이제 목걸이를 안해도 되겠군이라는 말을 한다. 쇼는 찰리를 위로해주며 이런저런 얘기를 더 하는데.. 그 와중에 찰리는 우리도 인간을 만들 수 있잖아 라는 말에 쇼는 자신이 불임이라며 '나는 그러지 못한다'라는 말을 한다. 그에 슬픔에 잠긴 그녀를 위로해주고, 찰리와 쇼는 관계를 맺게 된다.
----------------------------------------
한편, 시신을 발견한 직후 그 자리를 떠난 2명의 탐사대원이 있었는데, 그들은 길을 헛돌며 결국 그 건축물에서 하룻밤을 보내야되는 신세가 되버리고 만다. 그들은 돌고 돌아 시신이 발견된 위치로 돌아가 인간의 얼굴같이 생긴 조각 밑에서 잠을 청하려 하는데, 검은 액체에 접촉한 지렁이의 변형체를 보게 된다. 자칭 생물학자라고 불리는 놈은 이상하리만큼 그 이상한 생명체에게 겁 없이 달려들고, 아니나 다를까 그 변형된 지렁이에게 공격을 당한다. 지렁이는 강력한 힘으로 그의 팔을 조르고, 그의 동료는 재빨리 그 생명체의 머리를 칼로 잘라낸다. 그러나 생명체의 피는 산성으로 되어 있었고, 그 피가 수트를 녹이자 지렁이는 수트 속으로 들어가 생물학자의 몸속으로 들어간다. 그리고 그 동료 또한 그 피가 헬멧에 튀면서 헬멧이 쪼그라들어 죽음을 맞게된다.
다음날 잠에서 깬 찰리는 자신의 눈에 뭔가가 움직이는 것을 발견한다. 그러나 곧 탐사팀을 모집하는 얘기를 듣고는 바로 탐사를 떠날 준비를 하게 된다. 탐사팀은 어제 떠난 현장에서 두 대원의 시신을 찾게되고, 찰리는 증상이 악화되어 고통을 호소하게된다. 급히 철수하는 탐사원들은 함선에서 문을 빨리 열어 그를 치료해야 한다고 말하지만, 회사의 이사급되는 여자(비커스)는 찰리의 탑승을 거부하고, 화염방사기로 위협을 한다. 찰리는 자신을 희생하여 그녀에게 자기를 불태워 줄 것을 부탁하고, 찰리는 죽음을 맞는다. 그 충격에 쇼는 쓰러지게 되며 사건은 끝나는 것 처럼 보이게 된다.
눈을 뜬 쇼는 자신의 목걸이를 가져가려는 데이빗에게 무슨짓이냐며 묻는다. 데이빗은 오염물질이 있을 것 같아서라고 변명을 둘러대지만, 이에는 다른 이유가 있을 것이라 생각된다. 여튼, 데이빗은 그녀가 임신 중임을 쇼에게 알려주는데, 쇼는 자신이 불임임을 주장하며 당장 뱃속에 있는 외계 생명체를 꺼내줄 것을 요청한다. 이를 데이빗은 거부하고, 그녀에게 수면제를 투여해 잠에 들도록 한다. 그녀를 제데로 된 수면상테에 가두기 위해 2명이 위생복을 입고 옴기려는 순간, 그녀는 그들을 눕히고 수술실로가서 뱃속에 있는 외계 생명체를 꺼낸다(문어처럼 생겼다). 그리고 돌아다니는 도중 죽은줄로만 알았던 회장을 발견하게 된다. 회장은 "죽음"을 피하기 위해 창조주와 만나 그 비법을 알려고 그들과 함께 여행을 했던 것이다. 그리고 모든 창조주가 죽은줄만 알았지만, 데이빗이 발견한 한명의 살아있는 창조주를 만나로 가기 위해 준비를 하고 있는 상태였다. 쇼는 그들과 함께 다시 건축물 안으로 들어가기로 결정한다, 죽음을 피하는 방법을 알기 위해서가 아닌, 그들이 왜 그런 끔찍한 일들을 벌였는지에 대한 해답을 얻기 위해서이다.
한편, 함선에서는 필립의 카메라가 다시 켜진것을 의아하게 생각하고 함선의 문을 열어본다. 하지만 요상하게 꼬여있는 그의 몸을 보고는 죽은 것이라고 생각하고 문제 없다고 생각할 찰나, 필립은 다시 일어나고, 비정상적으로 커진 육체를 가지고 있었다. 그리고 그는 그 앞에 있는 동료들을 무참히 살해한다. 이에 따라 동료들도 무기를 들고 필립을 제거하려고 애를 쓰고, 대부분의 동료가 학살당한 뒤에 그를 제압하기에 성공한다.
준비를 다 마친 회장은 곧바로 건축물로 출발한다. 그리고 함선에서는 그 건축물 지하에는 건물이 아닌, 우주선임을 알아차린다. 여튼, 최후의 생존자가 있는 곳에 도착하고, 데이빗이 그를 깨운다. 깨어난 그 창조주(엔지니어)는 데이빗이 하는 말을 듣고는 갑자기 데이빗의 머리를 몸에서 분리하고, 그 자리에 있는 모든 인간을 죽이려고 한다(회장은 데이빗에게 죽음을 피할 수 있는 방법을 물어보라고 명령하였다).쇼는 다행히 그 자리에서 무사히 빠져나왔고, 엔지니어들의 목적이 인간을 보살피는게 아니고, 파괴하는 것을 느끼고, 그가 조종하는 우주선이 지구로 간다면 지구는 끝장이라는 말을 함장에게 전한다. 그에 함장은 함선을 그대로 우주선에 박으며 우주선이 지구로 가는것을 방해한다.
모든 것이 다 끝난줄 안 쇼는 함장이 마지막 순간에 방출해준 개인 탐사선에 들어가 쉬려고하지만, 곧 무언가 이상하다는 느낌을 받고 수술실로 향해본다. 그곳에는 그 문어가 사라진 상태였고, 거대한 문어발이 문을 부수려는 행동을 눈 앞에서 보게 된다. 설상가상으로 엔지니어가 그 곳으로 가고 있다는 데이빗의 수신을 듣고, 그녀는 문 앞에서 그가 올때까지 기다린뒤, 그가 도착하자 문을 열어버린다. 문어모양의 괴 생명체는 엔지니어를 먹이로 삼아 잠잠해지고, 쇼는 데이빗이 다른 우주선을 타고 집으로 돌아가면 된다는 말에 다시 우주선으로 향한다. 그러나 정작 쇼는 지구로 귀환하는 길이 아닌, 엔지니어들이 존재할 그들의 고향으로 돌아가 그녀의 질문에 대한 답변을 얻기 위한 여행을 택한다.
영화를 보면서 아쉬웠던점....
1. 허당들의 모임....
자칭 생물학자라는 놈은 처음보는 외계생명체에 들이대다가 죽임을 당한다... 이는 아무리봐도 조금 억지설정이지 아닌가 싶다... 또한, 탐사팀은 자신들이 여행을 떠나는 이유도 모른채 떠난 상태였다...(애초에 지원할 때 이런것은 알려주지 않나..)
2. 풀리지 않는 미스테리
나는 나름 해답이 존재하는 이야기로 마무리를 지어줄 줄 알았다. 그러나 정작, 엔지니어들은 인간들을 다 죽이려하고, 이는 또 다시 의문을 만드는 역할을 했다. 물론, 인간의 탄생과 같은 것에 확실한 해답을 주는건 어렵지만, 이를 단순히 'DNA가 매칭했으므로 그들이 우리의 창조주이다' 라는 말로, 창조에 대한 의미와 같은 것들을 전혀 해결해주지 않고, 힌트도 없고... 그들이 왜 인간을 말살하려하나 라는 의문만 품은 채 끝나는게 맘에 들지 않는다...(뭐 열린 결말이어서 나름 재밌는 상상이 펼쳐지는건 좋다)
추측/생각 글
1. 물질의 파괴와 재창조
영화의 시작부터 보여준 물질의 파괴와 재창조는 아무래도 이 영화의 중요한 요소 중 하나인것 같다. 어쩌면 엔지니어가 인간을 모조리 죽이려고 하는것도, 단순히 실험 대상으로써 다시 파괴하여 재창조하려는 목적을 가진 것일지도 모른다는 생각이 들었다.
2. 신이란..?
항상 생각하는 것이고, 이 영화에서도 말하는 것 같다. 신은 편을 들지 않는다. 만일 그들이 우리를 창조했다면, 우리는 마치 필립이 데이빗을 대하듯 대했을 것이다. 그저 우리보다 낮은 위치에 존재하는 "어떤 것"이라고...
'잉여잉여' 카테고리의 다른 글
!?! 마인크래프트 강남스타일 (1) | 2012.08.26 |
---|---|
VALVE 신입 사원 안내서 (0) | 2012.07.30 |
재밌어 보이는 책. (0) | 2012.07.18 |
UDK4 첫 게임. (0) | 2012.07.13 |
달리기 게임에 대한 생각. (0) | 2012.07.10 |
이번 글에서는 작업중이던 도형 자르기에 대해서 얘기해보자 합니다.
제가 구현한 사항에서는 볼록한 도형만 처리됩니다.
자르는 방법에는 2가지로 나눠보도록 하겠습니다.
1. Ray를 이용한 자르기 방법.
2. Collider를 이용한 자르기 방법.
위 두가지 방법은 크게 다른점은 없습니다. 단지, 실제 칼날을 쓸것이냐, 가상의 칼날을 쓸것이냐에 따른 차이가 존재할 뿐입니다.
1. Ray를 이용
-> Ray를 이용하는 것은 의외로 간단합니다. 먼저 물체가 잘리는 조건을 정하고 진행하도록 하겠습니다.
물체가 잘리는 조건: 물체를 완벽하게 그어야 된다.(물체 중간에서 멈추면 물체가 잘리지 않는다).
위 조건대로 방법을 보자면 다음과 같습니다.
마우스를 누른다(물체에 맞았나? Y: 물체를 저장하고, 해당 위치를 저장 N: 스킵)
마우스를 뗀다(아직도 Ray가 저장된 물체 위에 있나? Y: 안잘린다 N: 자르는 함수 실행)
2. Collider를 이용
-> 이것이 현재 사용되는 방법입니다. 어떤 물체에 rigidbody와 collider를 붙이고, OnCollisionEnter(Collision col)에서 col.contacts를 통해 충돌 위치들을 저장합니다
마찬가지로 OnCollisionExit(Collision col) col.contacts를 통해 빠져나갈때의 충돌 위치를 저장합니다.
이러면 어느위치에서부터 어느 위치까지 칼을 지나게했는지 알 수 있습니다.
이 두 점을 바탕으로 물체를 자르는 것입니다.
실제 물체 자르기 동작
한 오브젝트는 다음과 같이 이루어져 있습니다. Vertices, Triangles, Normals, Tangents, uv 등등 몇가지 더 추가요소가 있습니다만, 현재는 Vertex, triangle, normal
만이 조작되는 상태입니다.
Vertices는 점을 의미합니다.
Triangles는 int형 배열인데, 어떤 vertex가 한 삼각형을 이루는지 알려주는 배열입니다.
3단위로 끊어 읽어야 합니다. 또한 사용자가 바라보는 방향에서 시계방향으로 값을 넣어줘야 보입니다.
Normal은 vertices와 1:1매칭이되는 vector3형 배열입니다.
위에서 한 동작은 자르는 기준을 마련하는 행동이었습니다. 따라서 이제는 어떻게 실제로 자르는지를 지정해줘야 하는데, 이는 Unity에서 제공하는 Plane을 사용하여 구현하였습니다. 물체를 지나는 점의 시작과 끝, 추가로 정한 (검의 위치 혹은 플레이어 위치)를 토대로 평면(P)을 하나 생성합니다.
해당 물체의 triangle들을 순차적으로 돌면서 그에 매치되는 점들을 가져와 3점이 모두 P의 양(+)/음(-)의 방향에 있다면 Plane 기준으로 Mesh A(+),B(-)에 저장합니다.
만일 모두 음/양의 방향이 아니라면 그 삼각형은 평면에 의해 잘리는 것으로 판단되어, 동일한 방향의 점 S1,S2 와 한개의 다른 점 O1 를 잇는 선을 그어 평면과의 교점을 C1,C2라고 잡습니다. 그러면 다음과 같은 생각을 할 수 있습니다.
1. S1,S2,C1,C2를 바탕으로 새로운 삼각형 2개를 구성하기
2. O1,C1,C2를 바탕으로 새로운 삼각형 1개를 구성하기
위의 2가지를 구현하면, 깔끔하게 물체를 자를 수 있게 됩니다.
위의 2가지 점에서 상세하게 고려해야 할 것은
1. 시계방향의 판정
2. (S1,S2), (O1)이 각각 A,B 어느 Mesh에 속하게 되는가.
2번은 1번에 비해서 상당히 쉬운 문제입니다.
제일 큰 문제는 시계방향의 판정이라고 볼 수 있습니다.
시계방향의 판정은 해당 점들의 평균값을 구하고, 한 vertex의 normal값을 가져와 그에 따라 시계방향으로 정렬한 뒤, vertices와 triangles를 구성해주는 방법이 있습니다.
단, 위의 방법은 재정렬을 지속적으로 하는 것이므로 약간의 성능 부하의 가능성이 존재합니다. 따라서, 다음과 같이 생각해 봅시다.
1. S1과 P1, O1은 한 직선 위에 존재한다.
2. S2와 P2, O1은 한 직선 위에 존재한다.
3. normal 값을 알 수 있다.
위의 세 조건을 통해, 재정렬을 하지 않아도 충분히 if else 문으로만 처리를 가능합니다.
(S1,S2,C1,C2)로 이루어지는 사각형의 경우 두 삼각형은 항상 다음과 같은 세트로 존재합니다 (S1,S2,C1), (S2,C1,C2). 이해가 안가신다면 그려보시는게 편합니다.
여튼, 각 세트를 3점을 토대로 plane을 생성합니다. new plane(S1,S2,C1) 하고, 생성한 plane의 normal값과 저희가 알고있는 normal 값의 dot product가 +라면 제대로 생성된 것이고, 아니라면 역순으로 지정해주시면 됩니다.
이러한 방법을 통해 깔끔하게 물체를 자르 실 수 있습니다.
면 매꾸기
- 면을 매꾸는 방법은 볼록 물체에선 쉽습니다.
생각해야 할 것은 다음과 같습니다.
1. 새로생긴 점들
2. 새로생길 면의 방향
3. normal값 설정해주기.
위의 3가지를 처리하면 물체를 배는 면이 매꿔지는 것을 처리할 수 있습니다.
'[Unity3D]' 카테고리의 다른 글
UI 제작. (0) | 2012.10.11 |
---|---|
[UNITY3D] 면 뒤집힘 현상. (1) | 2012.08.22 |
자르기 구현 (2) | 2012.05.25 |
Editor에서 변경한 자료가 반영이 안될때. (0) | 2012.05.17 |
자체개발 카메라 애니메이션 (0) | 2012.05.10 |
1차
2차
3 차
구현즁
'[Unity3D]' 카테고리의 다른 글
[UNITY3D] 면 뒤집힘 현상. (1) | 2012.08.22 |
---|---|
물체 자르기 (1) | 2012.05.30 |
Editor에서 변경한 자료가 반영이 안될때. (0) | 2012.05.17 |
자체개발 카메라 애니메이션 (0) | 2012.05.10 |
BMFONT 이용하여 직접 제작한 font 사용하기 (1) | 2012.05.08 |

지속적으로 부딪히는 문제여서 글을 적어본다
Unity에서 editor를 사용해 특정 object의 값을 변경시킬 수 있다. 그러나 Play를 했을때 종종 값이 변경되지 않고, 원래 상태로 돌아가는 것을 볼 수 있을것이다.
이는 serialized된 값들에 변경이 적용되지 않기 때문이다. 따라서
InspectorGUI 맨 앞에는 serializedObject.update()와 모든 변경을 마치고, serializedObject.ApplimodifiedChanges()를 해줘야 한다.
또한 변경할 값들은 serializedObject.FindProperty("변수 이름").올바른 변수 타입 을 통해서 변경 시켜 줘야 한다.
가령 vector3값을 변경시킨다고 하면, serializedObject.findproperty("변수 이름").vector3Value를 통해 변경 시킬 수 있다.
'[Unity3D]' 카테고리의 다른 글
물체 자르기 (1) | 2012.05.30 |
---|---|
자르기 구현 (2) | 2012.05.25 |
자체개발 카메라 애니메이션 (0) | 2012.05.10 |
BMFONT 이용하여 직접 제작한 font 사용하기 (1) | 2012.05.08 |
커스터마이징 기능 구현하기 2. 데이터의 저장. (0) | 2012.05.03 |

.
CameraPlayerScript를 부착해서 사용한다.
Editor창에 AddRoad를 하여, 카메라가 움직일 길을 만들어준다
길은 AddNode를 통해 Node를 추가한 뒤 Node들을 설정하여 어느 위치에 갈지를 설정해준다.
현재 Scene을 움직여야 Scene창에 업데이트가 되는 상태이며,이는 추후 수정할 계획이다.
'[Unity3D]' 카테고리의 다른 글
자르기 구현 (2) | 2012.05.25 |
---|---|
Editor에서 변경한 자료가 반영이 안될때. (0) | 2012.05.17 |
BMFONT 이용하여 직접 제작한 font 사용하기 (1) | 2012.05.08 |
커스터마이징 기능 구현하기 2. 데이터의 저장. (0) | 2012.05.03 |
커스터마이징 기능 구현하기 1. Serialize란... (0) | 2012.05.02 |