블로그 이미지
자신의 단점을 메꾸는 것을 단(鍛)이라 하고 자신의 강점을 갈고 닦는 것을 련(鍊)이라 하여, 두가지를 합친 것을 단련이라고 부른다. 붕대마음

카테고리

전체목록 (666)
참고사이트 (8)
Goal (4)
Travel (10)
My Life (104)
Game (35)
Game Review (7)
Game Plan (0)
Books (5)
English (1)
Optimizing (12)
Study (218)
유용한 것들_etc (44)
유용한 것들_func (20)
Unity (48)
Unreal (87)
작업장 (54)
RenderMonkey (6)
정리요망 (1)
따라잡기 시리즈 (0)
링크용 (0)
Total343,311
Today3
Yesterday91

'작업장'에 해당되는 글 54건

  1. 2017.12.25 19. nsight
  2. 2017.12.03 18. dx를 자체 라이브러리로.
  3. 2017.12.01 17. svn.
  4. 2017.11.29 16. 32bit, 64bit
  5. 2017.11.27 15. archive
  6. 2017.11.27 14. character
  7. 2017.11.20 13. max plugin
  8. 2017.10.15 12. point, vector, ray, box, matrix, transform
  9. 2016.06.17 shader 구조를 대략 만들고 결과물을 띄웠다.
  10. 2016.06.11 static function 실수

19. nsight

작업장/Mgin 제작 / 2017.12.25 13:49

이전에 사용하던 퍼포스 대신 nsight 붙임. 기능에 익숙해지는데 시간이 좀 걸렸음.


1. 거지같이 프로파일링 정보가 좀 제한됨. nvidia gpu 제품 리스트에서 체크해보니 내건없구나..

2. 기존 dxut 기반이었던걸 뜯어서 하고 있는데 시간이 많이 걸림. 소스정리 한번 해야할것 같음.

3. c 드라이버에 설치해둔 3dsmax를 용량딸려서 지웠음. 이거 설정한다고 꽤 오래걸렸는데

   용량이 8기가 밖에 안남아서 unreal 관련 vs10 설치하느라 지움. 결국 다시 d 드라이버에 설정해야함.

   ssd 128 말고 256으로 사고싶다..시팡.


우선 max 지우기전에 대충 뽑아둔 플랜을 화면에 띄우는건 성공했다만 아직 카메라가 거지같아서

카메라도 작업을 좀 해야함.



결론은.....

1. 3dsmax d 드라이버에 다시 설치....ssd256가지고 시픔...그치만 다시 포맷하고 깔기가 너무 기찬...

2. 소스정리좀 해야겠다...

3. 카메라좀 정리해야겠다.


'작업장 > Mgin 제작' 카테고리의 다른 글

19. nsight  (0) 2017.12.25
18. dx를 자체 라이브러리로.  (0) 2017.12.03
17. svn.  (0) 2017.12.01
16. 32bit, 64bit  (0) 2017.11.29
15. archive  (0) 2017.11.27
14. character  (0) 2017.11.27
Posted by 붕대마음

댓글을 달아 주세요

dx에서 제공하는 라이브러리, 자료형들을 자체 라이브러리로 대체하여 만들었는데..

점점 이런생각이 든다.. 뭔가 쓸데없다...

코드만 지저분해지고..

그렇다면 자체라이브러리를 쓸려고 한 이유는 뭘까.

 

장점은...

1. 최대한 플랫폼 독립적으로 만든다. 요게 메인.

2. 3d api 를 직접 구현해 본다. 이건 머 차피 구현해본 순간만 기억나고 곧 까먹겠지만...

 

단점은...

1. 손이많이간다. core는 자체 라이브러리. 예를들면 mgvector, mgmatrix etc... (겁내 노가다)

2. 하위에서는 다시 컨버팅 해야한다. 예를들면 mgvector => d3dvector (겁내 기찮)

3. 프로젝트가 많아진다. 관리가 어렵다는 거지.

 

 

'작업장 > Mgin 제작' 카테고리의 다른 글

19. nsight  (0) 2017.12.25
18. dx를 자체 라이브러리로.  (0) 2017.12.03
17. svn.  (0) 2017.12.01
16. 32bit, 64bit  (0) 2017.11.29
15. archive  (0) 2017.11.27
14. character  (0) 2017.11.27
Posted by 붕대마음

댓글을 달아 주세요

17. svn.

작업장/Mgin 제작 / 2017.12.01 16:07

테스트 코드도 점점 많아지고 작업해둔 기간이 길어질수록 까먹는 일도 많고 해서 다시 svn을 사용하기로 했다.

기존에 사용했던 방식대로 visual svn을 사용했다.

이전에는 네명이서 작업할려고 iptime + 내 피씨 visual svn server 을 사용해서 설정했는데

3년전 일이라 1도 기억안나서 걍 대충대충. 이젠 혼자할거니까...

레드마인도 설치해서 svn 연동작업까지 하려고 했지만 귀차니즘과 해야할일 목록의 압박으로 다음기회에...

 

생각해보니 가장 처음은 cvs를 썻고 그 이후는 svn + 퍼포스, 그리고 지금은 그냥 퍼포스를 쓰는구만.

 

'작업장 > Mgin 제작' 카테고리의 다른 글

19. nsight  (0) 2017.12.25
18. dx를 자체 라이브러리로.  (0) 2017.12.03
17. svn.  (0) 2017.12.01
16. 32bit, 64bit  (0) 2017.11.29
15. archive  (0) 2017.11.27
14. character  (0) 2017.11.27
Posted by 붕대마음

댓글을 달아 주세요

1. size_t 관련 문제

int n = _tcslen(szStr);.

warning C4267: '초기화 중' : 'size_t'에서 'int'(으)로 변환하면서 데이터가 손실될 수 있습니다.

_tcslen 이 반환하는 값이 size_t이다.

왜 int를 반환하지 않고 size_t를 반환하는 걸까?

size_t의 내부를 보면 아래와 같이 되어 있다.


#ifndef _SIZE_T_DEFINED

#ifdef  _WIN64

typedef unsigned __int64    size_t;

#else

typedef _W64 unsigned int   size_t;

#endif

#define _SIZE_T_DEFINED

#endif

즉, 64비트는 8byte의 크기를 가지며 32비트에서는 4byte를 가진다.


2. 프로젝트 속성 설정

링커 - 고급 - 대상컴퓨터를 적절하게 고친다.

c/c++ - 전처리기 에 WIN32, WIN64를 적절하게 추가한다.


3. fatal error LNK1112

fatal error LNK1112: 'X86' 모듈 컴퓨터 종류가 'x64' 대상 컴퓨터 종류와 충돌합니다.

분명 링크-고급 옵션에서 대상컴퓨터를 수정했는데도 위와 같은 에러가 난다.

core 라이브러리를 땡겨쓰는데 이 core 라이브러리를 64로 설정해서 다시 빌드했지만 이를

땡겨쓰는 플젝에서는 위와같은 에러가 남.

자세히 보니 core 라이브러리의 64비트 설정 만들때 32비트에서 설정 가져옴을 사용했는데

제대로 못가져와서 라이브러리를 제대로 못만들었고. 그러다 보니 기존 32비트 라이브러리가 

안지워지고 그대로 남아있는걸 다른 플젝에서 가져다 쓰다보니 나는 문제였음.

확실히...32비트 아웃풋이랑 64비트 아웃풋을 분리해야 보기 편할듯.


Reference Link

msdn _int8, _int16, _int32, _int64

msdn 일반적인 Visual C++ 64비트 마이그레이션 문제

-

'작업장 > Mgin 제작' 카테고리의 다른 글

18. dx를 자체 라이브러리로.  (0) 2017.12.03
17. svn.  (0) 2017.12.01
16. 32bit, 64bit  (0) 2017.11.29
15. archive  (0) 2017.11.27
14. character  (0) 2017.11.27
13. max plugin  (0) 2017.11.20
Posted by 붕대마음

댓글을 달아 주세요

15. archive

작업장/Mgin 제작 / 2017.11.27 16:39

필요한 기능


1. 파일 저장

- 기본적으로 바이너리

- 디버깅을 위해 text나 xml로도 지원 (디버깅용)

2. 파일 로딩

- 바이너리

- MMF(Memory Mapped File) : 프로세스의 가상 메모리 주소 공간에 파일을 매핑한 뒤 가상 메모리 주소에 직접 접근.

장점

  a. 직접적인 파일 입출력을 수행할 필요가 없다.

     파일 내용이 메모리 주소에 사상되므로 파일을 모두 불러온 것처럼 메모리 주소를 이용하여 연산작업을

     할 수 있어 코드가 깔끔해지고 유지보수가 편해진다.

  b. 버퍼나 파일 처리를 위한 추가적인 자료 구조가 필요없다.

     os에서 페이징 기법을 사용하여 파일의 내용을 관리하며 페이지 크기에 따라 적절히 파일의 내용을

    읽고 쓸 수 있으며 파일 반영(flush)작업도 수행해 준다.

  c. 대용량 자료 처리에 효율적이다.

    파일적근시 지연적재를 이용하므로 필요한 부분만 파일에서 불러와 작업할 수 있으며,

    작업이 끝난 데이터는 자동으로 파일에 반영된다.

  d. 전통적인 파일 입출력 API보다 속도가 빠르다.

     api는 시스템 호출을 사용하기 때문에 작업을 수행하는 동안 유저 모드와 커널 모드를 전환하는 데 필요한

     인터럽트가 오버헤드로 작용하게 된다. 메모리 맵 파일은 4kib단위로 자료를 미리 불러올 때 발생하는 

     페이지 부재 외의 모든 작업이 실제 메모리상에서 이루어지므로 대부분 파일 API를 통한 파일처리보다 빠르다.

단점

   a. 파일크기(EOF 위치) 변경 불가능.

   b. 



추가작업

- 비동기 , 스레드, 언렬4를 참고해보자. 이건 먼 미래에 다시 해야지.


Reference Link

- 메모리맵 파일


- 위키, 메모리 맵 파일

- 위키, 페이징

- File Mapping

- MMF, gpg 내용

-

'작업장 > Mgin 제작' 카테고리의 다른 글

17. svn.  (0) 2017.12.01
16. 32bit, 64bit  (0) 2017.11.29
15. archive  (0) 2017.11.27
14. character  (0) 2017.11.27
13. max plugin  (0) 2017.11.20
12. point, vector, ray, box, matrix, transform  (0) 2017.10.15
Posted by 붕대마음

댓글을 달아 주세요

기존에 만들어둔 플러그인을 날리고 새로 제작한다.

기존것은 차피 오래돼서 기억도 안나고 지금 만들면 더 잘만들수 있지 않을까?

확장을 위해 기존에 만들어 둔 collada나 정보가 많이 공개되어있는 fbx중 하나를 지원하도록 해 볼까...

최적화를 위한 몇가지 아이디어도 있고 하니 살살 작업해보자.


3ds max 자체 플러그인 제작은 아래 링크를 보면 된다.


자체 포맷으로 정보를 저장하고 나서 다시 엔진에서 로드 하여 출력할 경우 구조를 어떻게 해야 할까.

케릭터를 출력하기 위해서는 기본적으로 버텍스, 인덱스, 텍스쳐, shader 가 기본적으로 필요하고

이를 출력하기 위해 카메라, 라이트, 유닛정보, 등을 담는 구조가 필요하다.

추가로 dx9 이외의 플랫폼을 지원하기 위해서는 상위 클래스도 필요할 듯 하다.


고민1.

엔진 구조를 짜면서 늘 하는 생각. 위에둘까 밑에둘까. 여기둘까 저기에 둘까. 이렇게 할까 저렇게 할까.

내가 아직 경험이 부족하고 지식이 적어 방황하기 떄문이겠지.

하나를 구현하는데 여러개의 방식중 어떤걸 택해야 할지 매순간 고민이다.

케릭터를 구축하기 위해 요구되는 정보는 너무 많으며 케릭터 자체가 하나의 큰 정보 덩어리 이며

게임에 있어서 큰 부분을 차지한다.

결국은 케릭터 + 환경을 제대로 구축해야 하는데 다중 플렛폼 특성상 고민해야 할 부분이 많다.

우선 이것저것 짜보고 안돼면 다시 짜는 방식으로 ㄱㄱ.


Reference Link

- max export 기본개념 1, 2, 3, 4, 5, 6, 7

- 3ds 포맷 알아보기

- 3ds 포맷 사용하기

- 자체포맷 만들기 1, 2, 3, 4

-


'작업장 > Mgin 제작' 카테고리의 다른 글

16. 32bit, 64bit  (0) 2017.11.29
15. archive  (0) 2017.11.27
14. character  (0) 2017.11.27
13. max plugin  (0) 2017.11.20
12. point, vector, ray, box, matrix, transform  (0) 2017.10.15
shader 구조를 대략 만들고 결과물을 띄웠다.  (0) 2016.06.17
Posted by 붕대마음

댓글을 달아 주세요

기존에 만들어둔 exporter 붙이면서 변경된 환경 업그레이드.

기존 환경 : max 8, vs 2010

바뀐 환경 : max 2014, vs 2012


문제 1.

이전에 작성해둔 설정방법대로 했는데 안됨. vs에서 프로젝트 만들기에 선택은 되지만 실제로 안 만들어짐.

C:\Program Files\Autodesk\3ds Max 2014 SDK\maxsdk\howto\3dsmaxPluginWizard 에 있는 

readme.txt 파일을 참고해 보면 아래와 같이 적혀있다.

1. Open the 3dsmaxPluginWizard.vsz file (in the 3dsmaxPluginWizard directory root) 

   in a text editor and edit the ABSOLUTE PATH parameter to reflect the new location of the 

   3dsmaxPluginWizard root directory. Do not add a backslash after the directory name.

Param="ABSOLUTE_PATH = [Absolute Path Location of 3dsmaxPluginWizard Root Directory]"

2. The version of Visual Studio you are using will determine what value to use for the 'Wizard' variable 

in the file 3dsmaxPluginWizard.vsz.

For Visual Studio 2010 use: Wizard=VsWizard.VsWizardEngine.10.0

For Visual Studio 2012 use: Wizard=VsWizard.VsWizardEngine.11.0

3. Copy the following files from the 3dsmaxPluginWizard root to the 'VC\VCProjects'

directory under your Visual Studio installation (e.g. C:\Program Files\Microsoft Visual Studio 10.0\VC\VCProjects):

3dsmaxPluginWizard.ico, 3dsmaxPluginWizard.vsdir, 3dsmaxPluginWizard.vsz

If you are using Visual Studio Express Edition, you need to copy the files listed above to 

the 'VC\Express\VCProjects' folder.

4.  Make all files in wizard file folder to be writable and not read only. If this is not done, than visual studio may 

generate an error after creating the plugin project.

5.  At this point the 3ds Max Plugin Wizard project should appear under File menu:New:Projects:Visual C++ Projects

in Visual Studio.


문제 2. error MSB8020 발생.

vs버전이 안맞어서 그런듯. vc++ 업데이트와, 속성에서 타겟플랫폼도 고쳐봤지만 안됨.

결국은 maxsdk 모든 파일을 v100으로 검색해서 찾음.

...\3ds Max 2014 SDK\maxsdk\ProjectSettings\propertySheets

위 파일을 열어서 PlatformToolset을 고쳐주면 된다.


문제 3. 

h파일을 못찾으면 포함파일에 include를 추가해주고, lib를 못찾으면 라이브러리 디렉터리에 실제 lib가 

있는 최종 폴더를 추가해 주면 된다.


문제 4. 

늘 거지같은 유니코드 문제... char대신 wchar_t 의 매크로인 MCHAR을 사용한다.


문제 5. 

실행시 어쩌고 저쩌고 .dll 실행 안댐 이러면 디버깅 쪽에 명령에 실제 exe 설정해주자.


문제 6. 

dll이 안떙겨와진다. 기존에 만들어둔 core 라이브러리는32비트인데 이건 max plugin은 기본 64비트.

기존 플젝을 64도 지원하게 고치는데 너무 피토해서 다시 복구시키고 맥스를 32로 수정하려고 삽질...max 2014는 64만 지원.

선택의 문제...전체플젝을 64지원가능하게 수정(api도 많이 바꿔야하고 어셈도 수정해야하고)......

그냥 맥스를 더 낮은버전(2013)으로 다시 깔아서 32를 지원하게 할까.....아..졸고민...

64로 통채로 바꾸고 싶지만 졸귀차늠이고...32로가자니..그것도귀찮지만 나중에는 결국 64도 해야할듯...고미고민.



Reference Link

- max export

- max export 기본개념 1234567

3ds 포맷 알아보기

3ds 포맷 사용하기

- 자체포맷 만들기 12, 3, 4, 5, 6,

'작업장 > Mgin 제작' 카테고리의 다른 글

15. archive  (0) 2017.11.27
14. character  (0) 2017.11.27
13. max plugin  (0) 2017.11.20
12. point, vector, ray, box, matrix, transform  (0) 2017.10.15
shader 구조를 대략 만들고 결과물을 띄웠다.  (0) 2016.06.17
static function 실수  (0) 2016.06.11
Posted by 붕대마음

댓글을 달아 주세요

Point : 점. 위치값. 3d 좌표일 경우 (x,y,z,1)로 w 컴포넌트를 1로 두어 벡터와 구분한다. (동차좌표계)

계산 편의를 위해 연산자 오버로딩 제공

Vector  : 벡터, 방향와 크기값. 3d 좌표일 경우 (x,y,z,0)로 w 컴포넌트를 0으로 두어 점과 구분한다. (동차좌표계)

계산 편의를 위해 연산자 오버로딩 제공

Length, Swap, Normalize, Scale, Dot, Angle, IsThereFront(가시성 판단), Projection, Cross 제공

Ray : 원점과 방향이 지정된 반 무한의 선. 

광선은 스칼라값 t의 함수로 광선이 지나가는 점의 집합.

물체와의 교차를 체크, 모션블러를 위한 시각값, 반사 횟수 제한을 위한 depth값이 필요하다.

Box : 물체를 둘러싸는 경계 입체(Bounding Box), aabb방식

공간 중첩체크, 특정 지점 포함 체크, 면적, 부피, 축 길이, 점 보간, 위치 offset, 광선 교차 같은

함수를 제공한다.

Matrix : 기본적으로 4x4 형태를 가진다. 행우선으로 저장한다.

전치, 역행렬, 행렬끼리 연산 관련 제공

Transform : Point, Vector, Normal을 동차표현으로 전환해 변환을 적용. 반환전에 원래 형태로 전환.


기본적인 연산자 오버로딩 제공, SRT 연산제공, LookAt, 직교투영, 원근투영, 좌표계 변환(왼손, 오른손)

Quaternion : 아래 사원수 링크 참고. 사원수로 변환. 사원수를 행렬로 변환, 구면 선형 보간

AnimationTransform : 변환 보간 


고민중...

1. core 프로젝트의 math 라이브러리중 friend 멤버 함수인 애들은 다른 프로젝트에서 어떻게 호출시킬까..

dll export로 하면 2039 err 남 

=> 이건 선언쪽에 같은 스코프에 정의까지 같이해줘야함.

    참고 : friend 함수 (MSDN)

2. 1120 err 문제. 위와 같은 상황이지만 struct임. h로 옮겨서 정의해도 함수를 못찾고 에러남.

=> 결국 문제는 내가 예상했던 문제가 아니라 내부 구현에서 사용한 함수를 export 안시켜서 그럼.

     결국 유틸함수도 함수 자체 dll로 만들어 버림.

     그냥 static function으로 

     참고 : 프로젝트 설정 dll


Reference Link

- Vector

좌표시스템 만들기

explict 키워드에 대해서

- Matrix

- Homogeneous Coordinates (동차 좌표계)

- 사원수, Quaternion


- 대입연산자 오버로딩

- 첨자 연산자

- 미분 제대로 알자

- 구면좌표계

'작업장 > Mgin 제작' 카테고리의 다른 글

14. character  (0) 2017.11.27
13. max plugin  (0) 2017.11.20
12. point, vector, ray, box, matrix, transform  (0) 2017.10.15
shader 구조를 대략 만들고 결과물을 띄웠다.  (0) 2016.06.17
static function 실수  (0) 2016.06.11
하루동안 삽질한 버그.  (0) 2016.04.09
Posted by 붕대마음

댓글을 달아 주세요

그냥 x파일을 로드해서 띄움.

셰이더 구조와 엔진 구조를 짜는데 시간이 좀 걸렸음.

내일부터는 기존에 해 뒀던 자체포맷, 케릭터 애니메이션 관련 작업을 

다시 정리하면서 붙여야 겠다.


이 결과물을 얻기 까지 삽질이 너무 많았다. ㅜㅜ.

그냥 몇년동안 작업하던 자체엔진 소스를 통채로 날리고 새로 짜는데 기억도 안나고 죽겠다...

마음에 안들어도 그냥 기존거 수정으로 갈걸그랬나벼....



완료

1. dxut를 쓰지 않는 멀티 플랫폼 엔진 기본 구조

2. dx shader(hlsl)을 사용하는 dx9용 셰이더 기본 파서.

3. 벡터, 행렬, 트렌스폼 관련 라이브러리 제작.


해야할 거.

1. 버텍스, 인덱스 구조

2. 케릭터 구조 (엔진상에서 어떻게 관리할 건지)



생각중인것.

1. 셰이더 고치고 fxo 컴파일 하고....이거 너무 귀찮음.. 어떻게 안 될까?

2. 상위는 전부 자체 api를 쓰고 하위 렌더러들에서 원하는 그래픽스 라이브러리를 사용.

   이렇게 하고 있긴 한데 컨버팅 하기가 겁니 귀찮.

'작업장 > Mgin 제작' 카테고리의 다른 글

13. max plugin  (0) 2017.11.20
12. point, vector, ray, box, matrix, transform  (0) 2017.10.15
shader 구조를 대략 만들고 결과물을 띄웠다.  (0) 2016.06.17
static function 실수  (0) 2016.06.11
하루동안 삽질한 버그.  (0) 2016.04.09
10. shader compile (fxo)  (0) 2016.02.14
Posted by 붕대마음

댓글을 달아 주세요

물체를 열심히 찍는데 물체가 안보인다....

머지??


상단에서는 graphic api 독립적이고 camera도 상단에 붙어있어서

dx 라이브러리는 안쓴다.

하단에서 dx9을 쓴다면 자체 api를 dx9로 바꿔주는 함수들을 제공한다.

그런데 행렬의 곱셈에서 삽질을 했다.


// 행렬 곱

static MgMatrix4x4 Mul(const MgMatrix4x4 &m1, const MgMatrix4x4 &m2) 

{

MgMatrix4x4 r;

for (int i = 0; i < 4; ++i)

{

for (int j = 0; j < 4; ++j)

{

r.m[i][j] = m1.m[i][0] * m2.m[0][j] +

m1.m[i][1] * m2.m[1][j] +

m1.m[i][2] * m2.m[2][j] +

m1.m[i][3] * m2.m[3][j];

}

}

return r;

}


이렇게 내부 라이브러리에 행렬 곱셈을 지원한다.


그리고 사용할때 이렇게사용했다.

viewProj_.Mul(view_, proj_);


사실 행렬이 문제라는건 나중에 디버깅 하면서 알게되었다.

처음에는 셰이더쪽을 의심했고 셰이더 파싱하는걸 다시 처음부터 다 봤다..

무튼 결론은 이렇게 사용해야 함. 

viewProj_= MgMatrix4x4::Mul(view_, proj_);


그냥 viewProj_ = view_ * proj_ 로 사용하게 곱셈 연산자 오버로딩을 만들었어야 했는데

그랬다면 이런 오해성 버그는 없었을 텐데...그냥 머 이렇게 또 꼼꼼함에서 내가 

모자랐다는걸 깨달은 거에의의를 두자.

'작업장 > Mgin 제작' 카테고리의 다른 글

12. point, vector, ray, box, matrix, transform  (0) 2017.10.15
shader 구조를 대략 만들고 결과물을 띄웠다.  (0) 2016.06.17
static function 실수  (0) 2016.06.11
하루동안 삽질한 버그.  (0) 2016.04.09
10. shader compile (fxo)  (0) 2016.02.14
9. 유니코드  (0) 2016.02.06
Posted by 붕대마음

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함