문제

XNA에서 모델을 그리고 싶습니다. 나는 앞서 나와 블렌더로 그것을 생산하여 FBX 파일 형식으로 내보내 었으므로 컨텐츠 파이프 라인이 작동 할 수 있습니다. WindowsGame ()의 Draw () 메소드에 어떤 코드를 추가해야합니까? 나는 다음을 시도했지만 내가 얻는 모든 것은 회색 화면 (회색이 아님, 맑은 색, 마음)뿐입니다. 모델은 content.load로 가져오고 오류가 발생하지 않으면 "bowl"이라고 불렀습니다. .

누구든지 내 여기에서 왜 작동하지 않는지 말할 수 있습니까?

protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
            BasicEffect b = new BasicEffect (graphics.GraphicsDevice, new EffectPool ( ));
            foreach (ModelMesh m in Bowl.Meshes)
            {
                b.View = Cam.mView;
                b.Projection = Cam.mProj;
                b.World = mWorld;
                b.EnableDefaultLighting ( );
                b.Begin ( );
                m.Draw ( );
                b.End ( );
            }

            base.Draw(gameTime);
        }

방금 이것이 효율성 측면에서 살인과 동일하다는 것을 알았지 만 많은 것을 시도했지만 최적화하기 전에 작동하기 위해서는 필요합니다.

도움이 되었습니까?

해결책

무언가를 처음으로 렌더링하려고 할 때 정말 일반적인 문제는 카메라가 자신이보고있는 것을보고 있지 않다는 것입니다. 또 다른 가능한 문제는 모델이 예상되는 척도가 아니라는 것입니다. 예를 들어, 카메라가 Z에서 5 개의 단위 인 경우 모델의 너비는 10 단위 인 경우 카메라는 효과적으로 모델 내에 있습니다.

렌더링 질문이 진행되는 한, Microsoft는 다음과 같은 훌륭한 문서를 가지고 있습니다. http://msdn.microsoft.com/en-us/library/bb203933.aspx

이 스 니펫을 도우미로 사용할 수 있습니다.

private void DrawModel(Model m)
{
    Matrix[] transforms = new Matrix[m.Bones.Count];
    float aspectRatio = graphics.GraphicsDevice.Viewport.Width / graphics.GraphicsDevice.Viewport.Height;
    m.CopyAbsoluteBoneTransformsTo(transforms);
    Matrix projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f),
        aspectRatio, 1.0f, 10000.0f);
    Matrix view = Matrix.CreateLookAt(new Vector3(0.0f, 50.0f, Zoom), Vector3.Zero, Vector3.Up);

    foreach (ModelMesh mesh in m.Meshes)
    {
        foreach (BasicEffect effect in mesh.Effects)
        {
            effect.EnableDefaultLighting();

            effect.View = view;
            effect.Projection = projection;
            effect.World = gameWorldRotation * transforms[mesh.ParentBone.Index] * Matrix.CreateTranslation(Position);
        }
        mesh.Draw();
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top