极致(Acme)-CG素材基地

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz

不能直接获取?聊聊如何在Shader Graph中获取深度图

2018-8-14 11:45| 发布者: admin| 查看: 106| 评论: 0

摘要: 0x00 前言在这篇文章中,我们选择了过去几周Unity官方社区交流群以及UUG社区群中比较有代表性的几个问题,总结在这里和大家进行分享。主要涵盖了StreamingAssets、Profiler、Playable、Particle、Spine、Launcher、S ...

0x00 前言

在这篇文章中,我们选择了过去几周Unity官方社区交流群以及UUG社区群中比较有代表性的几个问题,总结在这里和大家进行分享。主要涵盖了 StreamingAssets、Profiler、Playable、Particle、Spine、Launcher、Scripting 、Shader、 Shader Graph等领域,其中会着重介绍用一个workaround的方式在ShaderGraph中获取_CameraDepthTexture,也就是深度图。

同时,也欢迎大家加入我们这个讨论干货的官方技术群,交流看法分享经验。

Unity官方社区交流群:629212643


0x01 StreamingAssets

Q:请问一下,在Unity2018.2版本里,Unity会将放在StreamingAssets文件夹下的js文件当作Unity的UnityScript进行编译,但是我的资源里面有html页面,需要用到这个js文件。

A:我们分别在2018.2和2018.1上进行了测试。在Unity2018.2中,的确会将StreamingAssets文件夹下的js文件当作UnityScript进行编译,这应该是2018.2之后出现的一个Bug。

这个Bug已经提交,相关链接可以查看这里:

Unity IssueTracker - Non-Unity JavaScript files inside the StreamingAssets folder are being compiled as UnityScript filesissuetracker.unity3d.com


0x02 Profiler

Q:请问使用Profiler.BeginSample去标识代码块或者方法以便在Profiler性能分析工具中查看对应代码块的资源消耗,在unity2017.4.5版本将标识写在脚本的start无法成功标识,然而一样的代码在unity5.4版本却可以标识出来,但在标识写在unity2017.4.5的Update方法貌似也可以标识代码块。这个问题是版本问题吗?在2017.4.5的版本在某些初始化时应该怎样成功标识呢?

A:嗯。查了一下2017.3之后的版本修改了profiler数据的发送方式,从以前的frame base变成了stream base,在第一帧engine向editor发送的profiler数据丢掉了很多sampler,所以导致没有显示出来。

但是beginsample并不是不会在start方法中生效,游戏启动之后开启脚本的话还是可以看到的。启动时sampler不全的问题应该在2018上进行了修改。


所以,简单的说,没有显示BeginSample去标识的start代码块的原因是在2017.3-2017.4时有的sampler被丢弃了。并不是针对某个特定的方法不显示。


0x03 Playable

Q:在使用Playable的api时遇到了一些问题,下面第一张图是正常的情况。第二张图是调用:

    mixerPlayable.SetInputWeight(0, 1.5f);

将input0的权重设置为1.5之后的情况。整个模型被不正确的拉伸,并且动作表现错误。

正常情况
模型被拉伸,动作错位


A: playerable mixer的混合是这样的机制:Weight1 * animation1 + Weight2 * animation2 + Weight3 * animation3....。因此在权重总和大于1的时候会出现问题。建议对传入的权重进行归一化。


0x04 Particle

Q: 我有这样一个结构,刚刚创建是正常的。


现在把它Disable掉后调转180度。


再激活,黄色部分的发射器是正常的,红色是子粒子,发射错误。


A: 经过测试,这是一个Bug,即在play mode的情况下,disable掉parent对象并修改其transform数据后,subemitter并没有正确继承其parent的transform数据。

该问题已经向开发人员提交了Bug,可以在此查看:

Unity IssueTracker - Particle Subemitters don't inherit parent's rotation correctly while the parent object is disabled in Play modeissuetracker.unity3d.com


0x05 Spine

Q1:请问大家,当spine导出图片是两张时,unity编辑器里播放的动画就是乱的。有什么解决办法吗?


A: 导出设置里的“缩放”选项的scale缩小一下,比如改成0.8,导成一张。(成都-树林)


Q2:还是不够放到一张,可以再缩小吗?
A:去掉空白处,图集小很多。(成都-树林)



0x06 Launcher

Q1:我遇到了启动界面白屏的问题,5.6.0和2018最新版本都有,而且网上讲的办法都试过了,都不行,试了一整天了。


A1:白屏的问题解决了,怀疑是双显卡导致的,Unity的快捷方式右键可以选择运行的显卡,我来回切了两次就可以了。(深圳~刘彦)

A2:这种并非卡在loading页面的白屏,有可能是DX的驱动不兼容造成的,可以尝试切换运行的显卡,也可以尝试一下在命令行强制使用GL启动。相关命令行参数可以参考这个文档:

Command line argumentsdocs.unity3d.com图标


Q2:无限卡Loading…有人遇到过么?


A:卡Loading的问题,很多时候可以看看editor.log里面的相关输出。
例如下面这样的log:

No sufficient permissions while processing request “core.cloud.unity3d.com/“, HTTP error code 401

一般卡loading基本都是网络原因的多。可以试试断网,进入离线模式。有vpn的话也可以先去掉vpn这些,有的时候是因为vpn的各种奇葩的配置导致的,当然还可以查看一下防火墙的设置。

还有另外一种情况,例如下面这样的log:

COMMAND LINE ARGUMENTS:
D:\u2017.1\Editor\Unity.exe [CEF] undefined in file:///C%3A%2FUsers%2Falex%2FAppData%2FRoaming%2FUnity%2FPackages%2Fnode_modules%2Funity-editor-home%2Fdist/assets/unity-editor-home.js at line 39 Error loading api.unity.com/v1/oauth2

此时可以考虑移除”C:\Users\XXXXXX\AppData\LocalLow\Unity”文件夹,因为该文件夹会缓存一些登陆信息,移除之后再尝试启动Editor。


0x07 Scripting

Q1:刚学u3d不久,想问几个问题:
1.公司里是怎么生成json文件的
2.数据库的增删改,是直接在数据库文件里修改,还是写代码修改,如果公司有自己的服务器,
怎么拿到服务器里的数据.
求经验大佬来指教.

A:绝大多数编程语言都有生成json的方法,直接调用即可,比如java可以使用gson包。


数据库操作可以使用第三方框架,java的后台可以考虑hibernate或者mybatis。安卓端本地的sqlite可以使用content provider来调用数据库。Unity也有自己的使用sqlite的方法,不过我没用过。(南京-科穆宁)


Q2:话说开发手机ARCore要测试好不方便,每次都要打包出来…..请问大家有碰到过这个问题吗?有好的测试方法吗?谢谢~

A:Unity有提供一个叫做EditorConnection的类,可以用来满足类似的需求。相关文档可以查阅:

EditorConnectiondocs.unity3d.com图标



0x08 Shader Shader Graph

Q1:怎样让着色器弄成这样,我翻了文档,没查到。。。


A:这个是因为Shader文件中没有标示出ShaderSnippets,比如你创建一个surface shader,然后把CGPROGRAM去掉,也会是这个效果。


Q2:请问如何在ShaderGraph中获取深度图,例如_CameraDepthTexture?Unity版本2018.2。


A: 默认情况下,ShaderGraph没有提供接口直接获取_CameraDepthTexture的。
但是有一个workaround的方式可以来获取_CameraDepthTexture。即创建一个新的property,该property的name和reference都叫_CameraDepthTexture,与此同时不勾选exposed。


同时,打开LightWeightRenderPipeline Asset中的深度图选项。


鲜花

握手

雷人

路过

鸡蛋

最新评论

QQ|Archiver|手机版|小黑屋|www.cgacme.com ( 蜀ICP备18003526号 )

GMT+8, 2021-2-27 21:05 , Processed in 0.350335 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.