예제 #1
0
    } // Renderizar().fim
    // ---]

    private void desenharObjeto(Mesh obj, Propriedades3D props)
    {

      // Ajusta rotação do objeto 3d
      Matrix obj_rot = Matrix.RotationX(props.rotation.X + angulo) *
        Matrix.RotationY(props.rotation.Y) *
        Matrix.RotationZ(props.rotation.Z);

      // Ajusta posição do objeto 3d
      Matrix obj_pos = Matrix.Translation(props.position);

      // Tranfere posição e rotação para o mundo
      device.Transform.World = obj_rot * obj_pos;

      // Prepara e aplica material\textura no objeto
      for (int ncx = 0; ncx < g_meshMtl.Length; ncx++)
      {
        // Informa ao dispositivo o material a ser utilizado
        // na renderização    
        device.Material = g_meshMtl[ncx];
        device.SetTexture(0, g_meshTex[ncx]);

        // Renderiza o mesh
        obj.DrawSubset(ncx);
      } // endfor

    } // desenharObjeto()  
예제 #2
0
    }  // AtualizarCamera()

    // [---
    public void Renderizar()
    {

      // Limpa os dispositivos e os buffers de apoio
      device.Clear(ClearFlags.Target | ClearFlags.ZBuffer,
        Color.White.ToArgb(), 1.0f, 0);

      device.BeginScene();
      // (...) Todo o código de desenhar vai aqui   

      // Atualiza a câmera
      AtualizarCamera();

      // Configuração de luz
      device.RenderState.Lighting = false;

      // Posicionamento do primeiro modelo
      posicao = new Vector3(100.0f, 0.2f, -100.0f);
      rotacao = new Vector3(0, 0, 0);
      g_props = new Propriedades3D(posicao, rotacao);
      desenharObjeto(objeto3D, g_props);

      // Positionamento do modelo simplificado
      g_props.position  = new Vector3(-100.0f, 0.2f, -200.0f);      
      desenharObjeto(mesh_simplificado, g_props);

      // Mostra o número de vértices de cada modelo
      string info;
      info = String.Format("Modelo limpo: {0}", 
        mesh_limpo.NumberVertices);
      MostrarMensagem(20, 20, info);
      
      info = String.Format("simplificado: {0}", 
        mesh_simplificado.NumberVertices);
      MostrarMensagem(220, 20, info);

      info = String.Format("original: {0}", 
        objeto3D.NumberVertices);
      MostrarMensagem(420, 20, info);

      device.EndScene();

      // Apresenta a cena renderizada na tela
      device.Present();

      // Libera a janela para processar outros eventos
      Application.DoEvents();
    } // Renderizar().fim