【开发总结】—— BABYLON 3D开发常见问题及解决方法
前言:组内同事们根据长时间的Babylon.js开发实践,一起将项目开发中遇到的问题及解决方法做了一个梳理。
- ios 【最好】 关闭离线缓存—— 解决添加了反射的mesh 丢失的问题
- 不要使用 position:fixed; —— 微信里面是不会认的
- 天空盒的贴图尽可能调小,防止闪退,纯色的可以设为 1*1
- 模型上的文字、 小图标之类,最好前端贴透明贴图,避免模型贴上不去的模糊不清
- 透明贴图贴不上去的情况下,可以使用GUI的img控件来贴png
- 当UScale和vScale等于1时,切换UV通道没有反应,可以先改变uScale,再过100毫秒切换通道,再切换回原来的uScale;
- 多相机layerMask的情况下,使用actionManager是没有反应的,可以使用scene.pick(x,y,pre,camera)
- camera.targetScreenOffset动画要stopAnimation两次才能取消
- input和button点击时的蓝色外边框和灰色半透明背景处理:a,button,input,optgroup,select,textarea{- webkit-tap-highlight-color:rgba(0,0,0,0);}
- 移动端点透问题:1)尽量使用touch事件替换click事件。 2)用preventDefault阻止a标签的click
- 设置小于12px的字体,可用transform:scale(0.8),进行缩放设置
- audio元素和video元素在ios和andriod中无法自动播放应对方案:触屏即播
$('html').one('touchstart',function(){ audio.play() })
- active兼容处理即伪类:active 失效。 body添加ontouchstart
- GUI显示在ios 和android 显示有差异, 可以用dom来显示
- 贴图UV通道Material.贴图类型.coordinatesIndex=number;
- 翻转贴图法线mesh.flipFaces()
- 把mainTextureRatio略微调大点可以解决辉光闪烁的问题
new BABYLON.HighlightLayer("dianchi", scene,{mainTextureRatio:1.5});
- 第一人称相机或物体开启重力在不移动的情况下回停止掉落camera._needMoveForGravity = true;
- 手动设置mesh层级mesh.renderingGroupId=1
- 视频材质的一些属性不能直接设置,需要视频加载完成后才可以,设置如下。
var videoTexture = new BABYLON.VideoTexture("video", ["video/video3.mp4","textures/babylonjs.webm"], scene, false, false); videoTexture.video.loop=true; //无效scene.registerBeforeRender(function(){ if(videoTexture.isReady()==true){
videoTexture.video.loop=true //有效
}
}) - 移动端锯齿严重问题engine.setHardwareScalingLevel(0.4)
- 动态阴影不精确可以调下面的参数设置灯光阴影的范围和平接头
light = new BABYLON.DirectionalLight("Dir0", new BABYLON.Vector3(10, -3, -10), scene); light.intensity = 2;
light.position=new BABYLON.Vector3(-26.053449678125286, 4.620522808003314, 43.64921550154328)
light.autoUpdateExtends=false; light.shadowFrustumSize=110
shadowGenerator = new BABYLON.ShadowGenerator(4800, light); shadowGenerator.bias = 0.001; shadowGenerator.useBlurCloseExponentialShadowMap = true;
// shadowGenerator.forceBackFacesOnly= true; shadowGenerator.depthScale=100
//shadowGenerator.blurScale=0.6
// shadowGenerator.frustumEdgeFalloff = 10.0; light.shadowMinZ=0
light.shadowMaxZ=100 scene.meshes.forEach(function(mesh){ shadowGenerator.getShadowMap().renderList.push(mesh); mesh.receiveShadows = true;
}) - 骨骼动画导出错乱
- 3dsmax每个顶点支持的最多骨骼个数默认为20个,babylonjs最多支持每个顶点4个骨骼,你必须将
- 3dsmax中的顶点最多支持的骨骼个数手动设置为4,这样就可以正常使用。
- 参考:http://doc.babylonjs.com/exporters/bones_influences_per_vertex
注:本文整理只作学习,非本人允许不得转载
【开发总结】—— BABYLON 3D开发常见问题及解决方法的更多相关文章
- Android开发华为手机无法看log日志解决方法
Android开发华为手机无法看log日志解决方法 上班的时候,由于开发工具由Eclipse改成Android Studio后,原本的华为手机突然无法查看崩溃日志了,大家都知道,若是无法查看日志要它毛 ...
- 记一次SpringBoot 开发中所遇到的坑和解决方法
记一次SpringBoot 开发中所遇到的坑和解决方法 mybatis返回Integer为0,自动转型出现空指针异常 当我们使用Integer去接受数据库中表的数据,如果返回的数据中为0,那么Inte ...
- Android开发环境搭建时遇到问题的解决方法
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/linux_loajie/article/details/33823637 Android开发环境搭建 ...
- vue-router(hash模式)常见问题以及解决方法
问题一:// 动态路由/detail/:id 问题:动态路由跳转的时候,页面是不刷新的,相信很多人都遇到了相同的问题解决方法:在全局的router-view组件上设置一个key值,此key值为一个时间 ...
- NHibernate常见问题及解决方法
NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end ...
- C#用ado.net访问EXCEL的常见问题及解决方法
C#用ado.net访问EXCEL的常见问题及解决方法,除了像sql server,access常见的数据库,其实Excel文件也可以做为数据库访问. ado.net访问excel的实例: OleDb ...
- Nacos 常见问题及解决方法
Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈.在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续 ...
- 浅谈Excel开发:九 Excel 开发中遇到的常见问题及解决方法
Excel开发过程中有时候会遇到各种奇怪的问题,下面就列出一些本人在开发中遇到的一些比较典型的问题,并给出了解决方法,希望对大家有所帮助. 一 插件调试不了以及错误导致崩溃的问题 在开发机器上,有时可 ...
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (二)想对DBExpress的TSQLDataSet写对数据库操作的SQL语句出错了!
当我们搞定DataSnap后,我们进入客户端程序开发阶段了,我们建立了客户端模块后,打算按照刚才开发服务器的步骤开发客户端程序,随后加入了DBExpress的TSQLDataSet,设定数据库连接后, ...
随机推荐
- 截图神器-snipaste
基础操作 Snipaste 是一个简单但强大的贴图工具,同时也可以执行截屏.标注等功能. 截屏 开始截图 快捷键(默认为 F1) 鼠标左键 单击托盘图标 何谓一次 成功的截图 保存到剪贴板 ( / ...
- Log4j官方文档翻译(四、如何在java中输出日志消息)
我们已经创建来配置文件,本章详细的介绍下如何生成调试信息,并把他们转化成文本文件. 基本的例子 下面就是创建的一个基本的例子: log4j.properties的内容为: log = /usr/hom ...
- home.php
home.php <?php error_reporting(0); //抑制所有错误信息 @header("content-Type: text/html; charset=utf- ...
- Bolzano-Weierstrass 定理
这个定理是从吴崇试老师的数学物理方法课里看到的,表述如下: 有界的无穷(复数)序列至少有一个聚点. 序列的聚点定义为 给定序列 $\{z_n\}$,若存在复数 $z$,对于任意给定的 $\vareps ...
- BZOJ3571 [Hnoi2014]画框 【分治 + KM算法】
题目链接 BZOJ3571 题解 如果知道最小乘积生成树,那么这种双权值乘积最小就是裸题了 将两权值和作为坐标,转化为二维坐标系下凸包上的点,然后不断划分分治就好了 这里求的是最小匹配值,每次找点套一 ...
- BZOJ2194 快速傅立叶之二 【fft】
题目 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非负整数. 输入格式 ...
- Manthan, Codefest 16 B 数学
B. A Trivial Problem time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- splay模板整理
1.插入一个数 void insert(int x) { if (!root) { ++tot; e[tot].left = e[tot].right = e[tot].fa = ; e[tot].v ...
- Codeforces 297C. Splitting the Uniqueness
C. Splitting the Uniqueness time limit per test:1 second memory limit per test:256 megabytes input:s ...
- 气象城市ID列表
气象城市ID列表 数据来源: http://cj.weather.com.cn/support/Detail.aspx?id=51837fba1b35fe0f8411b6df 记录了2574个地区,2 ...