有没有办法反射球体,使其在 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)

unity切换天空盒 地面倒影

Unity中控制天空盒移动的解决办法

基于opengl的基础渲染器

DirectX11 With Windows SDK--23 立方体映射:动态天空盒的实现

用Unity3D制作一个球体的场景如何做