2017년 7월 2일 일요일

6월 20일

6월 20일
nCloth 와 옷 모델링 등장 







지난 회의로 시아를 환기시켰으며, 덕분에 조금 더 절망스러워졌으나, 다행히도 모델링 파트에서 커다란 전진을 보였으며, 또 새로운 실마리 또한 던져줬기 때문에, 시도해 볼 것들이 다양하게 늘어났습니다.

1. 남성용 상의 옷 모델링 두벌 셈플을 받음.
2. nCloth 기술을 들었음

이로써 시도해볼 방향은
1. physX Asset의 동적인 변화가 Apex Cloth 에 적용이 되는가?
    - 블루프린트 작업으로 우선 시도해 볼 것.
    - C++ 코드로 asset 부분을 포인트 하는 방식은 어떨까?
2. Maya nCloth 기술을 시도 해 볼 것.
    - 시범적용
    - 실현가능성 따지기.

가 생겨났으며, 하나씩 막힐때마다 바꿔가며 알아보고 있는 중입니다.

당장 nCloth에 대해 리서치 했을 때 나온점들은..
1. APEX를 unreal 에서는 지원하고 있다.
2. nCloth를 위한 Geometry Cache 역시 지원하기 떄문에, nCloth에 대한 배려가 없지는 않다.
3. nCloth 는 physiX Asset의 regdoll 이 필요없다?(조금더 알아봐야 할 것)
4. nCloth는 pre rander가 필요한 애니메이션일 뿐이다?
5. geometry cache 방식을 사용하지 못한다면 Morph target을 이용해야한다.
6. 부드러운 천을 APEX보다 월등히 잘 표현 해냈다.

정도 인듯합니다. 리서치가 더 필요한 부분입니다.


6월 19일

6월 19일
돌아가는 시간








피직스를 건드릴 계획은 잠깐 미뤄두기로 했습니다. 현제 목표를 잠깐 바꾸어 본 트렌스폼에 우선적으로 생각을 해보기로 결정했습니다.

우선 지난주에 알아낸 새로운 실마리는 본 컨트롤을 할 경우 피직스 랙돌 범위또한 늘어난다는 정보를 얻었으나,
하지만 옷을 늘릴 수 있다 한들, 옷의 치수가 바뀌면 안되기 때문에 옷에 본 컨트롤을 입힐 이유가 하등 없다고 개인적으로 판단중입니다.

APEX를 적용시킬 때 덮어씌울 피직스 에셋은 별도로 지정이 가능했었기 때문에, 만일 사람의 피직스 에셋을 지정한뒤, 사람의 신체사이즈를 조정한뒤 반응은 어떠할까 라는 의문을 가지게 되었습니다.

이를 실험해 보기 위해 이론뿐이었던 캐릭터 본 스케일링을 실제로 구현해야 할 시기라고 판단 되었고,

이후 오후에서 추가적으로 회의를 거쳤으며, 아직까지는 판단이 명확하게 서지는 못했으나, 무엇이든지 밀어봐야 할 시기가 되었습니다.

6월 16일

6월 16일
APEX Cloth 와 Unreal Engine4





Unreal의 최신버전인 4.16 의 쇼케이스에서 새롭게 선보인 기능들이 몇 개있는데, 그중에서 Unreal 자체 엔진에서 APEX Cloth 기능을 내장시켜벼렸습니다.
특히 clipping 문제등이 골칫거리였으며, maya 혹은 max에서 작업한 결과물이 Unreal 에서는 올바르게 나타나지 않는 문제들이 있었는데, 이를 해결하기 위함이라고 합니다.

4.16에서 experimental 기능에 “Clothing tool“를 활성화 시키면, 메쉬 수정단계에서 작업을 진행 할 수 있는데, 이미 사용하는 엔진이며, 기능도 단순하기 떄문에, max에서 작업환경때 보다 수월하고, 더 빠르게 결과물을 볼 수 있는 장점이 있었습니다.

또 이로써, 언리얼에서 제공하는 phAT 의 physX를 ragdoll로 인식시켜 physX에셋툴을 재사용의 편의성이라는 매우 큰 장점을 얻어냈습니다.

이로써 생각 해볼 부분들이 약간 변환되었습니다.

1. 랙돌의 사용방법과 cloth적용방법이 간편화 되었기 때문에, 이제 랙돌의 동적인 변화방법을 구현시키면 될 것.

2. socket이나 mesh 겹치기 방식은 완벽한 솔루션이 아니기 때문에, 더 좋은 방법이 있는지 찾아볼 것.

3. 옷에 대한 올바른 물리효과 기대치를 찾아낼 것

정도로 지금은 나눌 수 있을 것 같습니다.

6월 15일

6월 15일
현제까지 밝혀진 문제점/공부할 점

현제 내부에서 핵심 기능으로 평가중인 옷 과 신체사이즈 간의 관계, 사실적인 물리효과
에 대한 정보를 업데이트 합니다.
크게 핵심기능과 문제점을 짚어보며, 2주차 발표 이후 우리가 넘어가야 할 첫 번째 산이 어느 파트인지 설명 해 보겠습니다.




핵심기능과 문제점


1. 첫 번째로 신체사이즈는 Morph targer 과 Animation bone controller를 사용하여 키와 살의 변형이 가능하다는 결론을 얻었고, 이미 Morph target은 실제 적용에 성공하였습니다. 애니메이션 파트를 맡기에는 아직까지 시간과 정보가 부족하며, 우선순위도 비교적 낮기 때문에 2주차 발표에서는 구현 단계를 미루기로 결정했습니다.










(Morph target을 이용한 캐릭터의 세부적인 표현)








2. 두 번째로 옷에 대한 사실적인 물리효과에 대한 것입니다.
지금까지 AMD 와 NVIDIA, 혹은 HAVOK 사 등에서 내놓은 여러 가지 물리 엔진이 있으나, 얘나 지금이나 모델링 Clipping 문제가 있습니다.








 (위쪽의 AMD hairworks   아래쪽의 NVIDIA사의 Gameworks)


현제 코드빼고 무료로 공개되어있고, 다른 엔진에 비하여 양호한 편으로 Clipping문제를 해결중 이며, 좋게 평가 받고있는 Nvidia 사의 APEX Cloth 시스템을 사용하기로 결정했습니다.





(APEX Cloth)




기초적인 Cloth 시스템의 구현 역시 성공적으로 되었습니다만. 아직 남아있는 문제가 있습니다. 옷에 대해서는 ragdoll 시스템을 주입시켜야 합니다.




(ragdoll과 애니메이션의 병합 예시, ragdoll 수치를 높게 잡아 애니메이션에 따라 휘두른 주먹의 힘의 양이 메쉬의 몸무개를 뛰어넘어버려 메쉬는 넘어지게 된 장면입니다.)


ragdoll의 초기 구현 목적은 애니메이션과 별개로 스스로 “물리”적으로 동작하는 메쉬를 위해서 만들어 졌습니다.
이후 오랫동안 발전 끝에, 이 기술은 애니메이션 시스템과 병합되거나, 독립적으로 높은 퍼포먼스를 유지하며 훌륭하게 동작하는 단계에 이르렀습니다만, 독자적인 시스템들이 들어간 아종 ragdoll 들이 많이 생겨, 기준이 애매한 상태인 것 같습니다.

APEX Cloth 시스템에서는 ragdoll을 사용한다고 명시하였으며,
언리얼 엔진에서는 phAT라며, 물리에셋툴 이라는 이름의 툴을 이용해서 ragdoll과 비슷한 물리를 사용중인 것 같습니다.
14일 오전 테스트로 APEX Cloth 에서는 phAT 의 ragdoll은 먹히지 않았습니다.
같은날 오후 테스트로 APEX Cloth에서 사용하라고 하는 ragdoll을 구현했을 때, 정상적으로 언리얼엔진에서도 인식이 되는 것을 확인했습니다.

이로써 해결해야 하는 문제는 아래와 같습니다:
1. APEX의 ragdoll 시스템과 Unreal에서 제공하는 ragdoll 시스템은 동일한가?
2. 동일하다면 unreal에서 제공하는 ragdoll 로 APEX의 옷에 기능을 적용 할 수 있는가?
3. 동일하지 않다면 동일하게 바꿀 수 있는가?
4. 체형의 변화에 따라 옷에도 적용해야할 ragdoll 범위또한 변해야 한다. 이를 해결하기 위한 솔루션이 있는가? 혹은 C++ 코드로 우리가 수정 할 수 있는가?

의 문제가 남아있습니다.



3. 세 번째의 문제인  옷과 신체사이즈 간의 관계입니다.
신체사이즈의 조절과 기획에 맞는 옷의 사이즈를 생각하여 낸 결론은 문제없다 압니다.

우선 이 작업을 시작하기 앞서, 우리는
1. 수정을 할 신체부위의 최소, 최대치 기준 정립.
2. 옷과 신체부위와의 비교가 필요한 부위를 결정.
3. 옷과 신체부위의 메쉬와 언리얼 엔진에서의 치수 통일 ex) 1uu=1cm
4. 옷의 사이즈, 재질, 부위별로 세분화, 그에따른 신체에 적용가능한 허용 수치 결정.

를 회의를 통해 최종 정립합니다.

이후 신체사이즈에 따른 올바른 옷들을 sort 시켜줄 수 있는 알고리즘을 구현합니다.







가장 우선적인 작업



이 작업들을 행하기 위해 가장 중요한 부분은 통일되고, 필요기능이 충족되고, 재사용이 용이한 뼈대인 스켈레탈 메쉬를 구현하는 것입니다.
스켈레탈 메쉬가 있어야만 올바르게 아바타 생성, 옷과 아바타사이의 현실적인 적용, APEX 적용이 가능하게 되기때문에 가장 우선적으로 작업되어야 할 부분이 될 것입니다.
이미 이 부분을 맡을 Maya 공부는 시작되었습니다.










6월6일~6월 14일


66
 
캐릭터 세부설정 구현(머리, 가슴, , 팔 두께)
 
 

Unreal엔진에서 구현가능한 기술인 Morph target 방식을 3d MAX로 구현 성공,
언리얼 엔진에서 구동 성공
 
 
 
 
 
 
 
67~ 68
  
Unreal Socket 시스템으로 간단하게 모자 씌우기 목표
 



Socket 시스템을 이용해 불러온 마내킹에 옷을 입히는 방식 으로 모자 구현
하지만 애니메이션 재생시 일어나는 문제가 발생하였고, 해결을 위해 작업 일시 중지후
검색
 
 
 
 
610

현제 기술의 문제점 파악




 
현제 이용하고 있는 morph target 시스템은 메쉬의 변형만을 관리하기 때문에, 뼈의 사이즈를 조절 할 방법이 없다고 판단. 대안이나, 추가적인 기술 이용이 필요하기에 리서치/포럼에 질문 남기기 등을 시도.
어렴풋이 Maya를 이용해야한다는 판단
 
 
611

뼈 사이즈 에 대한 대안



 
한가지 솔루션을 발견했는데, Bone animation을 사용하면 뼈의 스케일을 조절이 가능하다는 힌트를 얻었으나. 몇가지 문제점이 있다는 판단이 섰는데,
1. 애니메이션은 항상 동작되어야 한다.
2. 캐릭터의 달라지는 키(본 사이즈로 인해) 에 우리가 어떻게 알고, 알맞은 옷을 입힐 수 있는가?
3. 키가 달라지면 ragdoll 또한 변하게 될것인데, ragdoll 또한 같이 변형이 될것인가?
 
 
 
 
 
 
 
 
 
 
 
 
 
612
  APEX 첫 시도
 
 
 
  
빠듯한 일정에 부득이하게 옷부터 구현하자는 마음에 APEX cloth 기술을 시도 해 보았고,
옷이 허공에 치솟다가 산산조각 나서 바닥에 널부러지는등의 악몽이 발생.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
613

  APEX 두 번째 시도
 
 
  
옷에 올바른 물리엔진을 구현하는대에 성공했으나, 옷이 3갈래로 찢어지며, 언리얼 엔진에서 구동 실패.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
614

  APEX 세 번째 시도
 
 



 
 
 
 
언리얼 엔진에 물리엔진을 입히는데 성공했으나, 다음 문제점이 나타났음.
옷에 콜리전(ragdoll)을 적용해야하는데, 콜리전의 세팅은 in-game에서 캐릭터의 체형 변화에 실시간으로 따라 갈 수 있을 것 이라는 판단이 들지 않음.
unreal에서 제공하는 ragdoll을 입혀보았지만 인식하지 못한 듯 하기 떄문에, APEX에서 사용하는 ragdoll만을 인식한다는 판단을 가지고 있음.
남은 기간동안 옷에대한 ragdoll의 자유로운 세팅을 구현하는 것이 주요 과제중 하나가 될 것.
 
 
 

2017년 5월 9일 화요일

tomcot 절대경로

문제:
실습한 이미지 썸내일 업로드 웹 프로잭트에서, 
jsp파일들이  default 위치인 webcontents 가 아닌 다른 폴더에 들어있을때, image folder에 접근하기 위한 방법은?


바꿀 코드는 thumbnai.jsp 에서

-원본 이미지-<br>
<img src="../image/<%=filename %>"><p>
-썸네일 이미지-<br>
<img src="../image/sm_<%=filename %>">

이거뿐
절대경로 방식인데 ../ 는
톰켓 구동 서버의 webcontents 가 절대경로 시작지점으로 인식하게 된다.

구버전 톰켓에서는 절대경로를 잡았을때에 c:\ 로 됬다 하던데, 요즘 버전들은 조금 바뀌었다 합니다.
톰켓에서 절대경로로 c;\ 를 접근하게되는것은 보안상 취약이 명백하기 때문에 이겠졍!

2017년 5월 2일 화요일

python자습[구구단]



def countingNum(firstNum):
    secondNum=1;
    while secondNum !=10:
        print(firstNum,'x',secondNum,'=',firstNum*secondNum)
        secondNum+=1
      
      
i=2;
while i <10:
    countingNum(i)
    i+=1




파이썬이 다음 프로잭트에 쓸모있나 없나 에 대ㅐ고민중, 실험삼아 만져봤는데 의외로 C 나 java 따위를 스까묵은 맛이 나서 기초는 쉽다.

함수 countingNum 에 인자값 firstnum 을 받는 이 함수는
secondo variable 과 작업을 한뒤에 나옴.

while문 아래에 i=2;구문부터 메인함수 역활인듯.
남들은 쉽다는데 나는 짜증나는걸. 너무 두루뭉실해서