※ Linp의 Orderby 사용   

    - 쓰이고 있는 클래스

    - Name 기준으로 정렬 후 list로 반환

Orderby.Tolist()

CSDataList  -> list에 소팅 후 데이터가 담겨져 있다.

※ 시퀸스 다이어그램

※ 클래스 다이어 그램

- 장점 

1. File Text의 내용을 한 번 만 읽어서 사용 가능(매번 File Text를 읽는 비용을 절감)

2. 이전 데이터와 현재 데이터를 비교하여 저장이 필요한 구조일 경우 원본과 가공데이터를 비교하여 저장 유/무를 판별할 수 있음.

3. 원본 Manager로 관리 되기 때문에 sub1,sub2,sub3... 확장해서 사용 가능

# 텍스쳐 얻을 수 있는 사이트

https://www.cgdirector.com/best-texture-sites/

 

6 Best High-Quality Texture Sites (Free & Paid)

The Best Website to get Free and Paid High Quality Textures for your 3D Projects. Download High-Res PBR Maps from these Library Sites for 3D Artists & Designers.

www.cgdirector.com

 

 

# 쉽게 Normal map 만들기

https://www.cgdirector.com/best-normal-map-generators/

 

Best Normal Map Generators - Our 6 Favorite Tools

Normal Maps are easily created through free Generators. They add detail to your 3D Models without the necessity of increasing polygon count.

www.cgdirector.com

 

# 지오메트리 & 텍스처 최적화 관련

 

https://garagefarm.net/blog/guide-to-rendering-optimizing-scenes-in-3ds-max-through-geometry

 

3ds Max Guide: Render Faster Locally and on a Render Farm

3ds Max Optimization guide to speed up rendering on render farms or locally for beginner and intermediate users. Click here to read.

garagefarm.net

 

'3D max' 카테고리의 다른 글

3D Max 2014 ver 단축키 설명  (0) 2022.08.12

※ 상수벡터

     ▶ 상수(const) XMVECTOR 인스턴스에는 반드시 XMVECTORF32 형식을 사용해야 한다.

     ▶ XMVECTORF32는 16바이트 경계에 정합되는 구조체로 , XMVECTOR로의 변환 연산자들을 제공한다.

     ▶ 정수 자료를 담은 상수 XMVECTOR를 생성하고 싶으면 XMVECTORU32를 사용한다.

   

    # 사용한 예시

코드
출력

 XMVECTORU32 는 본인이 잘못 사용하는건지 모르겠는데

여러가지 테스트 해보니 원하는 값이 안나온다.

 

※ 중복적재된 연산자들

     ▶ XMVECTOR에는 벡터 덧셈, 뺄셈, 스칼라 곱셈을 위해 중복적재(overloading)된 여러 연산자가 있다.

 

※ 기타 상수 및 함수

     ▶ π(원주율)가 포함된 여러 공식의 근삿값을 구할 때 유용한 다음과 같은 상수들을 정의한다.

     ▶  라디안(radian) 단위 각도와 도(degree) 단위 각도 사이의 변환을 위한 인라인 함수도 제공한다.

     ▶  최솟값/최댓값 함수들도 있다.

 

※ 설정 함수     

     ▶   DirectXMath 라이브러리는 XMVECTOR 객체의 내용을 설정하는 용도로 다음과 같은 함수들을 제공한다.

0벡터(0)를 돌려준다.

벡터 (1, 1, 1, 1)을 돌려준다.

벡터 (x, y, z, w)을 돌려준다.

벡터 (s, s, s, s)을 돌려준다.

벡터 (Vx, Vx, Vx, Vx)을 돌려준다.

벡터 (Vy, Vy, Vy, Vy)을 돌려준다.

벡터 (Vz, Vz, Vz, Vz)을 돌려준다.

     # 사용한 예시

 

※ 벡터 함수들

     ▶   DirectXMath 라이브러리는 다양한 벡터 연산을 위한 함수들을 제공한다. 다음은 그중 3차원 벡터를 위한 함수들이다. 2차원 벡터나 4차원 벡터를 위한 함수들도 물론 있는데, 함수 이름에 3대신 2나 4가 쓰인다는 점만 다를 뿐이다.

ll V ll 를 돌려준다.(절대값을 돌려준다.)

ll V ll ²  돌려준다.( 절대값의 제곱을 돌려준다.)

V₁ . V₂ 를 돌려준다.(내적을 돌려준다.)

V₁  x V₂ 를 돌려준다.(외적을 돌려준다.)

V / ll V ll 를 돌려준다.(정규화 벡터를 돌려준다.)

V에 수직인 벡터를 돌려준다.

V₁과 V₂ 사이의 각도를 돌려준다.

pParallel => projⁿ (V)를 돌려준다.

pPerpendicular => projⁿ (V)를 돌려준다.

V₁ = V₂를 돌려준다.

V₁ ≠ V₂를 돌려준다.

     # 사용한 예시

 

※ 부동소수점 오차

     ▶   컴퓨터에서 벡터를 다룰 때 주의해야 할 점이 있다. 바로,  부동소수점 수(Floating-pointnumber)들을 비교할 때 부동소수점의 부정확함을 반드시 고려해야 한다는 점이다.  당연히 같을 것 같은 두 부동소수점 수가 사실 약간 다를 수 있다. 예를들어 정규화된 벡터의 길이는 수학적으로 정확히 1이어야 하지만, 컴퓨터 프로그램 안에서 그 길이는 근사적으로만 1이다. 더 나아가서 , 임의의 실수 p에 대해  1^p = 1이지만, 근삿값으로만 표현되는 부동소수점 연산에서는 거듭제곱 과정에서 오차가 증가한다. 즉, 수치 오차가 누적되는 것이다. 다음은 이러한 개념을 보여주는 짧은 프로그램이다.

     ▶   부동소수점은 이러한 부정확함 때문에 두 부동소수점 수의 상등을 판정할 때에는 두 수가'근사적으로' 같은지를 보아야 한다. 이를 위해, 허용 오차로 사용할 아주 작은 수인 엡실론(epsilon)을 정하고 , 그 값을 이를테면 Epsilon이라는 상수로 코드 안에 정의해 둔다. 만일 거리가 Epsilon보다 작으면 두 수는 근사적으로 상등인 것이다.

다음은 Epsilon을 이용해서 두 부동소수점 수의 상등을 판정하는 방법을 보여주는 함수이다.(만든 것)

DirectXMath 라이브러리에는 두 벡터의 상등을 판정하는 함수가 있다.(라이브러리에서 제공)

     

 

          

'Directx12 > DirectX 내용' 카테고리의 다른 글

DirectXMath 라이브러리의 벡터(2)  (0) 2022.08.14
DirectXMath 라이브러리의 벡터(1)  (0) 2022.08.02

※ XMVECTOR 매개변수 전달.

   ▶  XMVECTOR  인스턴스를 인수로 해서 함수를 호출 할 때, 효율성을 위해서 XMVECTOR 값이 스택이 아니라 SSE/SSE2 레지스터를 통해서 함수에 전달되게 해야 한다. 그런 식으로 전달할 수 있는 인수의 개수는 플랫폼(32 비트 Windows , 64비트 Windows , Windows RT등)과 컴파일러에 따라 다르다.

   그래서 플랫폼/컴파일러에 대한 의존성을 없애기 위해서 XMVECTOR 매개변수에 대해  FXMVECTOR, GXMVECTOR, HXMVECTOR, CXMVECTOR라는 형식들을 사용해야 한다. 또한 , SSE/SSE2 레지스터 활용을 위한 호출 규약 역시 컴파일러에 따라 다를 수 있는데, 그러한 의존성을 없애려면 함수 이름 앞에 반드시 XM_CALLCONV라는 호출 규약 지시자를 붙여야 한다.

 

    # XMVECTOR 매개변수의 전달에 관란 규칙을 요약하자면 다음과 같다.

       1. 처음 세 XMVECTOR 매개변수에는 반드시 FXMVECTOR 형식을 지정해야 된다.

       2. 넷째 XMVECTOR 매개변수에는 반드시 GXMVECTOR 형식을 지정해야 한다.

       3. 다섯째와 여섯째 XMVECTOR 매개변수에는 반드시 HXMVECTOR 형식을 지정해야 한다.

       3. 그 이상의 XMVECTOR 매개변수들에는 반드시 CXMVECTOR형식을 지정해야 된다.

   

   ▶  예를들어, 32 비트 Windows에서 __fastcall 호출 규약을 지원하는 컴파일러와 좀 더 최신의 __vectorcall 호출 규약을 지원하는 컴파일러는 이 형식들을 다음과 같이 정의한다.

 

          // 32 -bit Window __fastcall은 처음 세 XMVECTOR 인수를 

          // 레지스터들을 통해서 전달하고 , 나머지는 스택을 사용한다.

          typedef const XMVECTOR FXMVECTOR;

          typedef const XMVECTOR& GXMVECTOR;

          typedef const XMVECTOR& HXMVECTOR;

          typedef const XMVECTOR& CXMVECTOR;

 

          // 32 -bit Window __vectorcall은 처음 여섯 XMVECTOR 인수를

          // 레지스터들을 통해서 전달하고, 나머지는 스택을 사용한다.

          typedef const XMVECTOR FXMVECTOR;

          typedef const XMVECTOR GXMVECTOR;

          typedef const XMVECTOR HXMVECTOR;

          typedef const XMVECTOR& CXMVECTOR;

 

    #  사용한 예시

규칙을 사용한 코드

   ▶  XMVECVOR 매개변수 중간에 XMVECTOR 매개변수가 아니여도 규칙은 똑같이 적용한다. 

    #  사용한 예시

매개변수 규칙이 똑같이 적용되는 코드

 

   ▶  생성자에 대해서는 조금 다른 규칙이 있다.        

         1. 처음 세 XMVECTOR 매개변수에는  FXMVECTOR 형식을 지정해야 된다.         

         2.  그 나머지에는  CXMVECTOR를 사용을 권한다.

         3.  생성자에는 XM_CALLCONV를 사용하지 말아야 된다.

 

    #  사용한 예시

생성자의 규칙이 적용된 코드

- 지금까지 말한 XMVECTOR 매개변수 전달 규칙은 '입력' 매개변수들에 적용된다. '출력' XMVECTOR 매개변수(XMVECTOR& 또는 XMVECTOR*)는 SSE/SSE2 레지스터를 사용하지 않으므로, 그냥 XMVECTOR가 아닌 매개변수들과 동일하게 취급된다.

'Directx12 > DirectX 내용' 카테고리의 다른 글

DirectXMath 라이브러리의 벡터(3)  (0) 2022.08.15
DirectXMath 라이브러리의 벡터(1)  (0) 2022.08.02

※ 자주 쓰이는 위주의 영역

▶ View Ports

     - 보여지는 영역이다.

 

▶ 네비게이션 바(Time and Navigation)

 

▶ Commnad Panel

 

▶ Main Tool bar

'3D max' 카테고리의 다른 글

텍스처 사이트 관련 글  (0) 2022.08.23

+ Recent posts