zoukankan      html  css  js  c++  java
  • 用TWaver加载大型游戏场景一例

    游戏中经常会出现一些大型的户外场景,例如一个小镇、一座古城等。通常这种场景中包含了较多的建筑、道路、桥梁等等元素,其3D模型比较大且复杂。在使用TWaver加载时,可使用一些技巧,让加载速度更快、显示更流畅。
    twaver-3d-town-1

    TWaver 3D支持导入json或obj等格式的3D场景。如果是obj格式,可将obj文件、mtl文件、所有贴图文件,以字符串参数形式传给TWaver进行加载。当然这些文件也都可以是网络上的URL字符串。

    var loader = new mono.OBJMTLLoader();
    loader.load(obj, mtl, images);

    TWaver支持在加载过程中对每一个物体进行进一步处理。例如材质贴图、特性等。我们通过下面的代码,可以将每一个加载的物体强制用白模显示:

    var loader = new mono.OBJMTLLoader();
    loader.load(obj, mtl, images, function (object) {
      box.addByDescendant(object);
      box.forEach(function(element){
        element.setStyle('m.texture.image',null);
      });
     

    twaver-3d-town-2

    或者直接使用wireframe的方式忽略物体表面,直接显示物体的线条形状:

    var loader = new mono.OBJMTLLoader();
    loader.load(obj, mtl, images, function (object) {
      box.addByDescendant(object);
      box.forEach(function(element){
        element.setStyle('m.wireframe',true);
      });
    twaver-3d-town-3

    308

    309

    这个obj文件超过16兆,TWaver解析的过程不超过5秒。但是实际应用中,资源文件可能存在网络上,网络传输则需要一定的时间。可以将obj文件或json文件进行打包压缩,加快传输效率。对于材质也可以适当降低精度,在显示出场景后再逐渐加载或按需加载高精度的贴图,进行动态的更换。

  • 相关阅读:
    C#实现Dll(OCX)控件自动注册的两种方法 jason
    C#创建COM对象的方法 jason
    C#怎样判断一个特定的OCX控件是否已注册 jason
    SharePoint2007之安装网站模板 jason
    QQ的clientkey与淘宝旺旺Token 不同平台环境下的登录认证 jason
    C# 程序自动以管理员身份运行 jason
    一步一步配置aspnetdb数据库
    非常实用的常用js
    常用js页面宽度与高度
    一步一步学asp.net_ajax
  • 原文地址:https://www.cnblogs.com/twaver/p/4205901.html
Copyright © 2011-2022 走看看