본문 바로가기
728x90

학원28

DirectX 3D ModelRender Material과 Texture를 뽑았으니 이제 Mesh Data를 뽑을 차례이다. Mash에도 이름이 붙기때문에 String으로 name저장을 해주고, Mesh같은 경우에는 여러개로 나뉘어져 있기 때문에(Mertarial을 여러개 붙여주기 위함) 그래서 Mash 정보에는 materialIndex선언 다음 생성을위한 vertices와 indices 설정해주고 ModelExporter.h로 이동하여 Mesh함수 만들어주기 binary로 받는 것이 좋기 때문에 ReadMesh를 해주는데 node는 트리형태로 뽑아줌 다음 WriteMesh 만들고 vector로 Meshdata 만들고 cpp에 함수 선언하고 cpp로 이동하여 만들어준 함수 작성 Mesh의 갯수만큼 반복 meshdata 생성해주고 mesh에서 n.. 2023. 11. 8.
DirectX 3D ExportMaterial assimp 라이브러리를 설치해야한다. 많은 정보를 가져오지는 못하지만 적당하게 쓸만하고 좋다. 이것을 적용하기 위해서는 Cmake라는 프로그램이 필요하다. Cmake를 실행시켜서 assimp를 선택해주고 적용하면 이런식으로 나오는데 필요한 정보가 있다면 찾아서 체크를 해주면 된다. 다 되었으면 Generate눌러주고 기다려준다음 assimp - result 폴더에 들어가면 비주얼로 열릴수있게 만든 파일이 생기게된다. 그러면 이제 assimp로 들어가 프로그램을 빌드해준다. 다 되었으면 이제 assimp - result 폴더로 이동하여 lib를 들어가 debug로 들어가면 lib파일이 생기게 된다. 이걸 이제 우리 프로젝트의 lib로 옮겨준다. 그다음 다시 assimp - result - bin 폴더로 .. 2023. 11. 8.
DirectX 3D SpotLight PointLight 원형으로 불빛을 쏘는 형식이면 SpotLight는 손전등 처럼 원형으로 한쪽 방향으로 쏘는 느낌으로 볼수있다 그러면 우선 PointLight에 썼던 float4로만든 CalcPoint 함수를 복사해서 CalcSpot함수를 새로 만들어 준다. 구 모양으로 빛을 쏘는 PointLight에서 원뿔에 대한 부분에만 빛을 쏘는 각도를 두개를 주어 가운데 부분에 빛이 온전히 가는 부분 그리고 바깥쪽은 감쇠하는 부분으로 주고, + Directional에서 썼던 방향정보도 필요하다 GlobalBuffer헤더로 이동하여 안쪽 각도 inner와 바깥쪽 각도 outer를 주고 PixelHeader.hlsl의 Light 구조체에 추가해준다. 이제 밑으로 내려와 새로 추가해준 함수를 수정해준다 우선 dir .. 2023. 11. 8.
DirectX 3D PointLight DirectionalLight와 PointLight의 다른점 방향만가졌다면 PointLight는 위치정보가 필요하고, sphere정보가 필요함 그러면 우선 GlobalBuffer.h의 Light구조체로 이동하여 필요한 정보들 추가 다음 PixelHeader.hlsl로 이동하여 GetPoint함수 추가하고 위에 만들었던 DirectionalLight코드 가져오기 감쇠만 추가하면 되기 때문 toLight는 빛의 방향이 아니기 때문에 worldPos(월드상의 정점)에서 빛의 방향을 빼줌 distanceToLight = Light에서 worldPos까지의 거리 toLight를 distanceToLight를 정규화시키면서 값을 넣어줌 이제 감쇠추가. distanceToLightNormal 1 - saturate을.. 2023. 11. 7.
728x90