2011-08-17 6 views
2

기본적으로, 나는 슬롯 머신 릴 (흰색 실린더 모델)을 덮고 있는데, 그 둘레에 여러 개의 균일 한 간격의 텍스처가 있습니다. 프로그램은 Windows에만 해당되며 텍스처는 내용 파이프 라인을 사용하는 대신 런타임에 동적으로로드됩니다. (Microsoft 예제에서 XNA를 사용한 Windows 기반 멀티 스크린 설정)여러 텍스처로 XNA4에서 원통형을 텍스처링하는 방법은 무엇입니까?

온라인에서 찾을 수있는 대부분의 예제는 XNA3 용이며 아직까지는 나에게 겉보기에 횡설수설합니다.

그래서 여러 텍스처가있는 실린더와 같은 오브젝트의 게임 텍스처링에 대해 도움을 줄 수있는 도움을 찾고 있습니다.

어쩌면 XNA (4.0 구체적)에서 텍스처링이 어떻게 작동하는지 제대로 설명 할 수있는 좋은 책이 있습니까?

감사합니다.

+0

아마도 질문을 명확히해야합니다. 하나의 모델에 여러 텍스처를 적용하는 방법에 대해 묻고 있습니까? (흥미롭고 까다로운 문제). 아니면 내용 파이프 라인이 아닌 파일에서 텍스처를로드하는 방법을 묻고 있습니까? (사소한 질문, 별도로 질문하는 것, 또는 설명서를 읽는 것). –

+0

런타임시 단일 실린더 모델에 11 개의 텍스처를 적용하는 방법에 대해 묻습니다. 여기서 어려운 요구 사항은 슬롯 머신 프로그램이 실행되기 전에 유틸리티 프로그램에서 사용자가 슬롯 머신 릴을 바꾸는 지에 따라 슬롯 머신 릴이 다른 심볼을 필요로한다는 것입니다. 나는 텍스쳐가 이미로드되어 있다고 생각하지만 텍스쳐링을 이해할 때까지 제대로 작동하는지 모르겠다. ... – Scott

답변

2

몇 가지 옵션이 있습니다. 모델이로드 될 때 또는 런타임에 생성되는지 여부와 여러 텍스처가 하나로 결합되거나 개별 개체로 유지되는지 여부에 따라 두 가지가 다릅니다.

미술 기술이나 아티스트에 대해 알고 있다면 가장 쉬운 접근 방법은 원하는만큼 많은 텍스처 (여러 가지 재료)로 실린더를 텍스처 매핑 할 수 있습니다. Model에 텍스처 당 하나의 메시 (ModelMesh)와 하나의 재질 (ModelMeshPart)이 있어야합니다. 이것은 실린더가 항상 고정 된 수의 텍스처를 가지고 있다고 가정합니다. 그런 다음 런타임에 텍스처를 교환하려면 ModelMesh.Effects 컬렉션을 반복하고 각각을 BasicEffect으로 캐스팅하고 Texture 속성으로 설정합니다.

모델을 수정할 수없는 경우 모델을 생성해야합니다. AppHub 사이트에서이 예가 있습니다 : http://create.msdn.com/en-US/education/catalog/sample/primitives_3d. 텍스처 좌표를 생성하지 않으므로 추가 할 필요가 있습니다. 실린더 당 5 개의 이미지가 필요하면 세그먼트 수를 5의 배수로, V 좌표를 실린더 주위를 감싸는대로 0에서 1, 5로 설정해야합니다. 이 기술을 사용하여 텍스처를 개별적으로 유지하려면 실린더를 5 개의 청크로 그릴 때마다 매번 GraphicsDevice.Textures[0]을 현재 텍스처로 설정해야합니다.

둘 다 기술을 사용하면 실린더를 단일 그리기 호출로 그릴 수 있지만 Texture2D.GetDataTexture2D.SetData을 사용하여 단일 텍스처로 병합해야합니다. 이것은 더 효율적이 될 것이지만 실제로 문제가되지는 않습니다. 당신이 어떤 종류의 미친 슬롯 머신 파티클 시스템을 만들지 않는다면 말입니다.

+0

내가 작업하는 방식은 컨텐츠 파이프 라인을 통해 표준 방식으로로드 된 모델이다. . 텍스처 랩을 생성하는 프로그램을 작성하려고 생각했지만 추가 작업을 피하려고했습니다. 각 릴에는 11 개의 기호가 있습니다. 동적으로 텍스처를로드하면 슬롯 머신 창이 시작될 때 사용자가 새 슬롯을 원한다고 결정할 때만 달라지는 11 개의 심볼이로드된다는 것을 의미합니다. 기호를 변경하는 것은 런타임에는 발생하지 않지만 프로그램이 유틸리티 프로그램에 의해 실행되기 전에 발생합니다. – Scott

+0

릴 모델을 별도의 메쉬로 분할하는 아이디어는 좋은 생각입니다. 어떻게해야하는지 살펴볼 것입니다. 지금은 간단한 모델 생성을 위해 Google SketchUp을 사용하고 있습니다. – Scott

+0

오른쪽. 어떻게 든 거기에 텍스처 좌표를 가져와야 할 것입니다. Sketchup이 필요한 컨트롤을 제공 할 지 확신 할 수 없습니다. 그것은 아마 할 수 있지만 나는 안개가 가지 않을 것입니다. 도움이 될까요? http://www.youtube.com/watch?v=ILnIbp509cY&feature=related. 내용 파이프 라인을 통해로드 된 모델에 텍스처 좌표를 적용하려고하면 실린더를 직접 제작하는 것보다 훨씬 어려울 것입니다. SketchUp이 두통을 겪고 있다면 필립스 3D 링크로 시작해서 텍스쳐를 추가 할 것입니다. – Aranda