用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 ...
随机推荐
- jeasyui控件事件和方法的使用方法
1.事件是在页面加载后就注册绑定: $(function () { ocr(); }); function ocr() { $('#dgTeacher').datagrid({ onClickRow: ...
- Codeforces Round #319 (Div. 2) C. Vasya and Petya's Game 数学题
C. Vasya and Petya's Game ...
- 【hdu3966】Aragorn's Story
题意:给一棵树,并给定各个点权的值,然后有3种操作:I C1 C2 K: 把C1与C2的路径上的所有点权值加上KD C1 C2 K:把C1与C2的路径上的所有点权值减去KQ C:查询节点编号为C的权值 ...
- 红米note手机连接mac系统
到http://www.android.com/filetransfer/ 下androidfiletransfer.dmg文件,安装好这个软件,然后再连接usb就可以用这个软件管理手机内存卡和s ...
- 【POI 2010】 Pilots
[题目链接] 点击打开链接 [算法] 单调队列 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 3000010 ...
- flask g对象
g对象 一次请求中使用 下面用redirect重定向,不是同一次请求了 g:global 1. g对象是专门用来保存用户的数据的. 2. g对象在一次请求中的所有的代码的地方,都是可以使用的. 使用 ...
- 【172】outlook邮箱设置
参考:outlook 2013设置 参考:Outlook设置hotmail邮箱POP3和SMTP服务器 注意
- matlab绘制曲线对比图
>> clear;>> x1=[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8];>> y1=[0,0.55,0.69,0.86,0.93,0. ...
- Shell脚本下条件测试(eq.ne.....)(转载)
转载:http://cxj632840815.blog.51cto.com/3511863/1168709 Shell编程中的条件测试 在Linux编程中经常会用到判断数值的大小,字符串是否为空这样或 ...
- bzoj 3743: [Coci2015]Kamp【树形dp】
两遍dfs一遍向下,一边向上,分别记录子树内人数a,当前点到所有点的距离b,最大值c和次大值d,最大值子树p 然后答案是2b-c #include<iostream> #include&l ...