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

这个obj文件超过16兆,TWaver解析的过程不超过5秒。但是实际应用中,资源文件可能存在网络上,网络传输则需要一定的时间。可以将obj文件或json文件进行打包压缩,加快传输效率。对于材质也可以适当降低精度,在显示出场景后再逐渐加载或按需加载高精度的贴图,进行动态的更换。
用TWaver加载大型游戏场景一例的更多相关文章
- Cocos Creator 加载和切换场景(官方文档摘录)
Cocos Creator 加载和切换场景(官方文档摘录) 在 Cocos Creator 中,我们使用场景文件名( 可以不包含扩展名)来索引指代场景.并通过以下接口进行加载和切换操作: cc.dir ...
- MFC加载大型osg模型
MFC加载模型,发现打开 Navid 缓冲等选项后,加载大型模型的速度就快了很多. #include "stdafx.h" #include "OSGObject.h&q ...
- 加载cocos studio场景
今天尝试加载cocos studio的场景. 新版的cocos studio中,"导出"选项变成了"发布".发布之后会生成一个res文件夹,其中每个场景有一个. ...
- sceneManager.loadscene加载场景时不会主动去加载场景的依赖包,要手动加载或添加场景到build setting列表中
假设有一场景1001.unity,,manifest文件如下: ManifestFileVersion: 0CRC: 425184873Hashes: AssetFileHash: serialize ...
- tensorflow 在加载大型的embedding模型参数时,会遇到cannot be larger than 2GB
这种问题是,对于每一个变量 variable 由于是基于protobuf存在这大小限制(2G),这个时候,我们需要将embedding拆开,拆分成N等分,来使得每一个 variable都在2G以下; ...
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Application.LoadLevel(“yourScene ...
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条
Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Ap ...
- (转)Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
http://www.xuanyusong.com/archives/1427 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通 ...
- 微信小游戏 4M升8M分包加载
一.微信分包加载 微信分包加载教程 嘛,因为原来的4M太小了,满足不了小游戏内容的需求,现在提升到了8M.这8M可以分包加载,而不需要一次性加载8M. 如果是老版本,则分包加载不起作用,会一次加载8M ...
随机推荐
- 2016/1/20 笔记 1, 包 引入 static 已经补充到类里 2,继承
继承 1,关键字 extends 2,子类自动继承父类非私有的属性和方法 也叫成员变量 成员方法 3,super代表的是父类 调用父类的方法 默认在构造函数中生成 ...
- 什么是sibling and tail recursive calls
1 tail call 在函数f中调用函数b,如果这个调用是函数f中执行的最后一条指令,那么这个调用就称为tail call. 例子: int foo(float a, float b) { ... ...
- Selenium Webdriver弹出框 微博分享的内容控制与结果生成
browser.window_handles for i in ugc_url_l: js = 'window.location.href="{}"'.format(i) brow ...
- .NET下为百度文本编辑器UEditor增加图片删除功能
[摘要:比来写了个项目,用到了UEditor,但是UE并出有文件删除功效 然后网上找若何增加 找半天只能找到一个1.2.X的 以是便摹仿PHP的 改成了.NET的 PHP本文 第一步 (增加背景删除地 ...
- YTU 2509: 奇怪的分式
2509: 奇怪的分式 时间限制: 1 Sec 内存限制: 128 MB 提交: 113 解决: 48 题目描述 上小学的时候,小明经常自己发明新算法.一次,老师出的题目是: 1/4 乘以 8 ...
- lodop
一.控件参数 Lodop有如下控件参数,以页面object对象元素的参数形式使用: Caption名称:设置控件的显示标题格式: < pa ram name="Caption" ...
- [疑问] C# 多线程程序,如果在并行程序块中开空间会远远慢于将空间开在并行块之外
// int[,] label = new int[m, n]; Parallel.For(, thread_num, (n) => { ]; i++) { int[] tmp = new in ...
- android判断正在使用的网络类型 0.不知道网络类型;1、2G;2、3G;3、4g;4、wifi
判断正在使用的网络类型 0.不知道网络类型:1.2G:2.3G:3.4g:4.wifi /** Unknown network class. {@hide} */ public static fina ...
- C#面向过程之编译原理、变量、运算符
.net基础:.net与C# .net是一个平台 c#是一门语言 .net的用途a.桌面应用程序 b.网站应用程序 c.专业游戏开发(XBOX360) d.嵌入式设备软件开发 e.智能手机APP开发 ...
- mybatis 注解写法 多层嵌套foreach,调用存储过程,批量插入数据
@Select("<script>" + "DECLARE @edi_Invoice_Details edi_Invoice_Details;" + ...