透视相机怎么得到正交效果

透视相机怎么得到正交效果

1)透视相机怎么得到正交效果
2)Unity 2018异步加载场景时isDone不为true
3)关于AssetBundle的疑惑
4)www下载图片是否支持直接下载成各个平台支持的压缩格式
5)场景CombinedMesh移除法线等多余信息

这是第189篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)


Rendering

Q:我的场景中有两种物体需要渲染,一种A需要透视效果,一种B需要正交效果,不太想用两个摄像机去分别照两种物体,请问有办法用其它方式来处理B,使其能够得到用透视相机渲染出正交效果吗?

A1:(1)如果楼主用的是URP,那就比较好办,可以参考Unity官方的FPSCameraDemoUniversal Rendering Examples,这个例子里面通过调整Camera的FOV(比透视的值大一点,透视得到正交效果无非就是想去掉近大远小的效果吧)。如果效果不满足,有可以参考RenderObjectsPass里面的写法,自己Override一下Execute方法,在里面调整一下Camera的类型完了再恢复回去即可。

(2)非SRP然后又不想用两个相机,目前没想到什么好方法。
感谢李星@UWA问答社区提供了回答

A2:B类物体自定义材质,传入自己的正交projection matrix,不要用Unity的透视projection matrix。

感谢fubbi1000@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5e0ab720ce53cf56002cae2e


Loading

Q:我们使用的Unity版本:2018.4.0

在场景完成加载时,Unity 2018异步加载场景时isDone不为true。我们打印了加载场景的进度,进度到了0.9就直接进入场景了。不知是否是引擎的Bug?

A:检查一下AsyncOperation。
当AllowSceneActivation = false的时候,到0.9就会停住。
AllowSceneActivation = true的时候,就会自动加载到1.0并且 isDone = true。

感谢萧小俊@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5e05601d73f93355f9668016


AssetBundle

Q:我有一个主场景,一个战斗场景,目前的做法是每次切换场景时的Loading场景中会清理掉上一个场景的AssetBundle,加载下一个场景的AssetBundle。我的疑惑是需要每次都清理吗?在主场景几乎全是UI图片组成的情况下,可否不卸载主场景的AssetBundle?

A:首先这个问题和版本有关,5.6以上版本使用LZ4格式压缩,AssetBundle占用内存较小,在内存允许的情况下可常驻内存,是否常驻主要跟资源的共用次数和内存有很大关系,楼主可以先测试一下内存,并且对自己的游戏的峰值内存有个预估,再决定是否常驻。

感谢郑骁@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5e0a1e96ce53cf56002cae2d


Texture

Q:通过www直接从服务器下载jpg或png大图,不通过事先打包成AssetBundle包的形式,是否能直接下载成各个平台支持的压缩格式,减少游戏内存?

A1:可以参考这个文档:https://docs.unity3d.com/ScriptReference/WWW-texture.html

jpg加载后变成RGB24格式,png加载后变成ARGB32格式,如果需要DXT压缩的格式可以使用LoadImageIntoTexture,链接:https://docs.unity3d.com/ScriptReference/WWW.LoadImageIntoTexture.html

不过移动平台对DXT格式支持的如何不清楚,很少有使用这个格式的。
感谢Huatimes@UWA问答社区提供了回答

A2:现在大部分硬件厂商都已支持ASTC,谷歌也开源了压缩代码,基于C++11,楼主有兴趣可以自己参考魔改。

感谢郑骁@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5e00632b73f93355f9667f57


Mesh

Q:现在发现场景打入到AssetBundle后,CombinedMesh里面拥有法线和切线信息(UV信息反而没有)。法线和切线数据实际占到近2/3 CombinedMesh的尺寸,并且在光照烘焙后是完全没有用途的。

因此现在想找个办法将这两个数据处理掉。不知道各位有没有相关流程的经验?

A:测试删除合并前模型的切线法线导入就可以。不过总体还是比分散模型大很多。

感谢题主欧月松@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5dfde406ce53cf56002cad67

封面图来源:Universal Rendering Examples
该项目包含Custom Renderer示例的集合。
https://lab.uwa4d.com/lab/5e12a64a8bab6aaf027ed9c7


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)