전체 글330 2. vtk의 Observer Pattern (1. vtkObserver) [이벤트 발생 주체(vtkObject)] → vtkSubjectHelper → vtkObserver → vtkCommand::Execute() 예측 시나리오1. vtkObject에서 이벤트가 발생한다.2. vtkObject의 멤버인 vtkSubjectHelper로 이벤트 전달3. vtkSubjectHelper와 연결된 Observer에 이벤트 전달4. Observer의 Next Observer에 이벤트 전파5. 각 Observer의 멤버인 Command에서 이벤트 실행 아직 전체 코드를 다 보지는 않았기 때문에 대략 이런 내용이겠구나 생각하고 패스.우선 vtkObserver부터 분석 시작//----------------------------------Command/Observer stuff--.. 2025. 7. 20. 1. vtkTimeStamp vtkTimeStamp는 vtk의 가장 근간이 되는 클래스로, 객체의 변경? 업데이트? 여부를 관리하는 클래스vtk는 수많은 상속구조로 되어 있는데 이 vtkTimeStamp는 아무 것도 상속받지 않은 단독 클래스다. Modified라는 함수 내에서 static으로 atomic 형태의 카운팅 변수를 들고 있고, 객체가 업데이트되면 이 정수값을 증가시킨후 객체의 내부 MTime 변수에 대입한다.이 정수값이 가장 큰 오브젝트가 가장 최근에 업데이트된 객체라는 것을 알아차릴 수 있고, 업데이트 유무도 이 정수값을 통해 확인할 수 있다. ModifiedTime을 통해 내부적으로 변경 여부를 관리한다 (생성자에서 0으로 초기화)New, Delete는 클래스 단위에서 객체의 생성(new)과 소멸(delete)를 함.. 2025. 7. 20. 3. 연조직과 뼈 구분하여 Volume Rendering 연조직과 뼈를 구분하기 위해 첫번째로 LUT Texture를 만들었습니다.LUT Texture는 Texture1D 형태로 구현되며 초기값으로 Look-up table이 들어가게 됩니다.Look-up table을 SRV로 만들어 볼륨이 렌더링될 때 픽셀 셰이더로 넘기면, 픽셀 셰이더에서 볼륨을 렌더링할 때 밀도값을 이용하여 Look-up table을 샘플링하고, 그 값은 최종 색상에 반영됩니다. - On / Off 기능 구현을 위해 상수버퍼의 구성을 조금 수정하였습니다.- 16바이트 패딩에 의해 기존에 float fDummy[2]가 있었던 자리에, int형식의 플래그 2개를 만들었습니다.- Raycast Shader는 이 버퍼를 들고 있다가, 사용자가 G키나 H키를 누르면 이 값을 업데이트하고 다시 GPU.. 2025. 2. 25. 2. Input 및 Camera 구현 1. 키보드 및 마우스 입력 구현형식 자체는 기존에 게임 개발 시 직접 만들었던 프레임워크를 참고하되, 현재 렌더러 프로젝트에 맞게 변형하여 사용하였습니다.- 입력값을 어디서든 사용할 수 있도록 싱글톤 패턴으로 구현하였습니다.- 키보드 및 마우스 입력을 구현함으로써 입력에 대한 처리를 수행할 수 있게 되었고, 다음에 구현할 카메라 클래스가 해당 기능을 사용하게 됩니다. 2. 카메라 클래스 구현- 카메라에서는 뷰행렬 및 투영행렬을 만드는 역할을 합니다.- 따라서 멤버변수로 변환행렬을 만들기 위한 변수들을 들고 있습니다.- 굳이 클래스로 뺀 이유는 카메라의 월드행렬을 만들고 용이하게 관리하기 위함입니다.- 카메라를 객체로 둔다면 카메라의 월드행렬의 역행렬을 통해 간단히 뷰행렬을 구할 수 있는 이점도 있을 뿐.. 2025. 2. 23. 이전 1 2 3 4 ··· 83 다음