有没有办法反射球体,使其在 A 帧中表现为天空盒? (A-frame 文档建议不起作用)
Posted
技术标签:
【中文标题】有没有办法反射球体,使其在 A 帧中表现为天空盒? (A-frame 文档建议不起作用)【英文标题】:Is there a way to reflect a sphere so that it behaves as a skybox in A-frame? (A-frame docs suggestion not working) 【发布时间】:2020-02-13 11:53:51 【问题描述】:我完全按照文档的描述进行操作(参考
https://aframe.io/docs/master/components/scale.html)
在 Glitch 上的一个超级基本 WebVR 场景中,与沿 Z 轴反射球体相关的代码似乎不起作用。这似乎相当简单,所以我无法想象为什么会有任何麻烦。我是在做一些愚蠢的事情还是真的没有用?我知道我可以使用天空,但我想要更多地控制位置、旋转等(它需要成为世界中的一个元素)。
A-Frame 版本:1.0.4 平台/设备:Windows ASUS Rog Zephyrus 笔记本电脑、桌面浏览器(在 Firefox 和 Edge 上测试) 可重现的代码片段或 URL:https://east-stock.glitch.me/。理想情况下,您不应该像在这个场景中那样从“外部”看到球体,并且一旦您在球体“内部”导航,就会出现红色。只要你有它,这就是我在我的场景中放置的:
<a-entity
geometry="primitive: sphere; radius: 4"
material="color: red"
scale="1 1 -1"
position="0 0 -5"
></a-entity>
【问题讨论】:
【参考方案1】:您需要为球体的材质添加一些属性才能使其工作。
<a-entity
geometry="primitive: sphere; radius: 4"
material="color: red; side: back; shader: flat; "
scale="1 1 1"
position="0 0 -5"
></a-entity>
您只想显示球体表面的“背面”,这就是 side:back
所做的。您可能不希望球体反射光线,因此在这种情况下,我将添加 shader:flat
参数,使其呈现平坦。
【讨论】:
谢谢!这似乎行得通,几乎。在我的测试中 side:back 和 side:double 似乎在做同样的事情(无论是在内部还是外部都渲染球体)。 'double' 显示球体的内部和外部。因此,如果您在球体内部,您将获得相同的效果。 是的,但是 side:back 似乎对我做同样的事情,因此造成了混乱。使用 side:back 设置从外部仍然可以看到球体。编辑:我刚刚意识到这可能是球体中离你最远的部分,它实际上正在被渲染并且仍然可见。使用 side:back 球体不会变得不可见以上是关于有没有办法反射球体,使其在 A 帧中表现为天空盒? (A-frame 文档建议不起作用)的主要内容,如果未能解决你的问题,请参考以下文章
shader之——单光源,法线,高光,+天空盒环境反射(HDR)