zoukankan      html  css  js  c++  java
  • Silverlight C# 游戏开发:L2 自定义模型导入

    Balder的Geometries里提供了很多的已有的模型,比如立方体、圆柱等等,但是我们在开发游戏的时候大多情况下都是使用3D设计工具制作自定义的3D模型,而本篇则介绍的是如何导入显示一个自定义的3D模型。

    首先我们可以看看Geometries的自带模型,你可以在对象浏览器或Geometries.来查看。

    里面的Heightmap我们在后面会专门介绍,今次我们主要介绍Mesh(网格对象),使用它来完成自定义的模型导入。

    然后,请准备好一个3D设计工具,3Dmax或者Maya再或者Lightwave再再或者……,好吧,我们简单点,使用大众化的3DMax,打开Max软件,从Object中拉一个壶出来,选择文件->导出,选择ASE文件格式。

    保存名字为teapot.ase的文件,将这个文件添加到我们的工程中,这个工程完全可以从L1中修改,请参看或下载《Silverlight C# 游戏开发:L1 3D世界的建造》

    将文件的编译方式修改成为Resource,即资源方式,建立Silverlight控件名字为Lesson02,然后添加如下代码到构造函数中

    //L1
    Game game = new Game() { Width = 600, Height = 400 };
    game.Camera 
    = new Camera();
    game.Camera.Position 
    = new Coordinate(100150100);
    game.Camera.Target 
    = new Coordinate(000);
    game.Children.Add(
    new OmniLight() { Position = new Coordinate(000) });

    //L2
    //new一个网格对象Mesh
    Mesh Teapot = new Mesh();
    //设置坐标
    Teapot.Position = new Coordinate(000);
    //开启交互操作(可使用鼠标旋转)
    Teapot.InteractionEnabled = true;
    //读取文件的名字,当前支持ase的文件格式
    Teapot.AssetName = new Uri("/Balder_Studio;component/Res/teapot.ase", UriKind.Relative);
    //将茶壶添加到Game当中
    game.Children.Add(Teapot);

    LayoutRoot.Children.Add(game);

    请注意,AssetName赋值的Uri的目录和你添加到的位置需要一样,这方面如果不是太明白,请参看后面附带的工程,源代码下载

    这时你会发现可能会有一些错误,那是因为没有添加命名控件引用,添加命名空间的Using到文件头部:

    using Balder.Execution;
    using Balder.Lighting;
    using Balder.View;
    using Balder.Math;
    using Balder.Objects.Geometries;

    好了,不要忘记将MainPage中的控件添加改成Lesson02,运行起来看看效果吧。下面是Silverlight程序:

    获取 Microsoft Silverlight

    如果你觉得太小,可以修改摄像机的坐标来调整观测的范围,关于摄像机和灯光,我们在下一个篇章中介绍。

    源代码下载地址:点击这里下载工程

    工程中如果缺少Balder.dll请在这里快速下载:SL4_Balder.rar

    推荐Silverlight游戏开发博客:深蓝色右手 

  • 相关阅读:
    c++获取时间戳
    指针数组学习
    Matlab小波工具箱的使用2
    matlab 小波工具箱
    指针
    低通滤波参数
    git 合并分支到master
    matlab json文件解析 需要下载一个jsonlab-1.5
    matlab2017b
    数据结构-链式栈c++
  • 原文地址:https://www.cnblogs.com/nowpaper/p/1871497.html
Copyright © 2011-2022 走看看