변형 (메시)에 대해서는 이해할 수없는 내용입니다. 첫 번째 (에서 (렌더링) 함수) 내 코드에서 봐 주시기 바랍니다 :활성 객체 간 전환 - 변환 /보기 이해
foreach (GeometricObject obj in this.objects)
{
if (obj != this.activeObject)
{
obj.Mesh = MeshUtils.ChangeMeshColor(obj.Mesh, Color.Yellow, device);
}
else
{
obj.Mesh = MeshUtils.ChangeMeshColor(obj.Mesh, Color.Green, device);
obj.GeometryMatrix.Translate(this.move);
}
device.Transform.World = obj.GeometryMatrix;
obj.Mesh.DrawSubset(0);
}
설명 : 나는 약간 노란색 gometriObjects (메쉬)와 하나의 녹색에 activeObject (나는으로 전환 할 수 있습니다 가지고 키보드 1-4). '이동'은 키보드에서 모든 화살표를 선택한 후에 변경되는 벡터입니다 (따라서 활성 객체를 이동할 수 있음).
그러나 내가 원하는대로 작동하지 않습니다. ... 내 객체 중 하나의 위치를 변경하면 ... 다른 객체 (활성 객체 변경)로 전환 한 후 화면의 다른 뷰가 나타납니다 (모든 스위치가 끝난 후 모든 객체가 같은 위치에 있습니다). 화면;/). 왜 항상 같은 시각이 아닌가? 내 생각에 ... 같은 전망을 가지고 있기 때문에해야한다 :
device.Transform.View = Matrix.LookAtLH(new Vector3(0.0f, 2.0f, -25.0f), // Camera position
new Vector3(0.0f, 0.0f, 0.0f), // Look-at point
new Vector3(0.0f, 1.0f, 0.0f)); // Up vector
그래서 내 문제는 무엇입니까? 어떤 아이디어 :)? 아하 ... 문제가 해당 changingMeshColor 함수와 연결되어 있지 않습니다 ... 확인했습니다.
obj.GeometryMatrix.Translate(this.move);
에 :
obj.GeometryMatrix *= Matrix.Translation(this.move);
...하지만 이유가
나는 이것을 여러 번 읽었지만 여전히 당신의 질문이 무엇인지 모른다. 사실보기 매트릭스가 변경되지 않지만 오브젝트 위치를 변경할 수 있다는 것은 카메라가 주어진 오브젝트를보고 있지 않다는 것을 의미합니다. – Goz