Imgui 간단한 예제 +
Transform 헤 파일 이동
함수 GUIRender 생성
imgui가 같은 이름으로 하면 이슈가 많이 생기기 떄문에 protected에 string tag 추가
또한 tag를 받아서 세팅해줄 SetTag 함수 생성
if 조건문사용 Imgui TreeNode (묶어주는 기능)
위치 변경
DragFloat3 드래그 기능으로 조절
0.1f 속도 조절할 경우 드래그를 할때 0.1 단위로 설정
1.0f로 할경우 1단위로 조절
각도 변경
lotaion값이 현재 radian값으로 되어있기 떄문에
XMConvertToDegrees 함수이용
Float3 rot로 x,z,y Degree 값 만들어주고
DragFloat3로 바뀐 값으로 Degree 조절한 다음
다시 Radian값으로 바꿔줌
XMConvertToRadians 함수 이용
스케일 변경
TreePop으로 TreeNode 끝남 선언
다음 잘 동작하는지 확인을 위해 TutorialScene cpp 파일 에서 큐브 세팅을 해주고
TutorialScene의 GUIRender 함수로 이동하여
큐브에 GUIRender를 호출
오른쪽에 있는 ImGUI를 통하여 위치 각도 스케일 값 마우스 드래그를 이용하여 변경 가능
오늘의 작업
Object 폴더의 Basic 폴더에 GameObject 헤더파일 생성
겹치는 함수들 관리
큐브에서 겹치던 함수들 제외 및 정리
Scene폴더에 새로운 TerrainScene 헤더 파일 생성
GameManager cpp 파일로 이동하여 기존에 쓰던 TutorialScene을 주석을 달고
TerrainScene 헤더 추가 및 교체
지역을 만들 예정이라 Object폴더에 LandScape 폴더 생성 후 Terrain 헤더 추가
정점 변경이 많기 때문에 VertexUV VertexType 생성
메쉬를 만들 함수 MakeMesh() 선언
출력을 위한 Mesh<VertexType>* mesh; 선언
Terrain cpp 생성 및 파일로 이동
meterial로 texture를 받고
mesh생성
메쉬를 만들기 위해 MakeMesh함수에서
Vertices값을 mesh로 받은다음
vertices를 reserve를 이용하여 넓이와 높이만큼 범위를 지정
이중 for문을 돌려 vertices 정점 설정
Indices 값을 mesh를 통하여 받고
reserve로 indices도 범위 설정 칸 갯수이기 때문에 높이 넓이에서 1을 뺴주고 곱한값에
폴리곤은 한칸에 두개이기 때문에 폴리곤하나에 indices 3개로 6을 곱해준값이 들어간다.
이중 for문으로 시계방향으로 돌림
다음 테스트를 위해 TerrainScene cpp파일로 이동하여 Render와 delete만들어주기
평면으로 된 맵 완성
디버그 창에 warning뜨는 이유
Tutorial.hlsl파일에 SamplerState를 0번을 넣어주기로 하였는데 안넣었다고 뜨는 상태 넣어주는것이 좋기 때문에 state를 추가해주어야함 FrameWork 폴더에 state 폴더를 만들어준 후
Filter 확대 또는 축소 할경우 필터링을 통하여 처리하는 역할
LINEAR는 주변의 색깔을 비교하여 중간의 색깔을 섞어서 부드럽게 표현
POINT는 찍어서 선명하게 표현
Address UVW
UV 조절하여 여러가지의 효과를 줄수있음
LOD( Level Of Detail)
카메라의 거리에 따라서 퀄리티를 다르게 하는 기능
물체가 멀리 있을땐 Low로 가까이있을 경우엔 High출력
CullMode
none으로 설정할시 양면 출력기능
특정 상황에서는 반대로 출력하여 깔끔하게 보여주는 것이 가능
FillMode
폴리곤을 어떻게 찍는지 확인을 할경우 사용하여 와이어 프레임으로 보여줌
Texture의 Pixel정보를 뽑아내는 함수 만들기
texture 헤더로 이동
public에 ReadPixels를 float4 배열 매개변수로 받아 선언
color를 uint로 하여 image.GetPixels 값 받아오기
size 에는 image.GetPixelsSize() 통하여 Pixel 갯수 받기
pixels에 resize로 size /4 를 하면 컬러의 갯수가 나옴
float scale로 1 / 255를 미리잡아줌 나눗셈보다 곱셈 계산이 빠르기 때문
연산이 편함
Texture의 컬러값 알아냄
다음 Texture 폴더에서 HightMaps 폴더
컬러에 따라 지역의 맵높이를 조절할수있는 사진 파일
다시 Texture 헤더로 와서 Float2 GetSize 함수 선언
이미지의 넓이와 높이 가져오기
다음 Terrain 헤더에
heightMap 추가
cpp파일로 이동하여
heightmap에 맵사진 가져오기
Terrain의 Makemesh()함수에서
넓이와 높이값 받아오고
ReadPixels로 Pixel읽어오기
지형 높이 설정
'학원' 카테고리의 다른 글
DirectX 3D Specular (0) | 2023.10.25 |
---|---|
DirectX 3D Camera (1) | 2023.10.25 |
DirectX 3D ImGui (1) | 2023.10.24 |
DirectX 3D Grid (1) | 2023.10.19 |
DirectX 3D 큐브 이용하여 태양계 간략하게 만들기 (0) | 2023.10.18 |