bntre/CurvedSpaceShader

一个使用 4D 球体投影在 Three.js 中实现弯曲空间着色器的示例。

License

CC0-1.0 license 1 star 0 forks

弯曲空间着色器

这个顶点着色器最初是用 HLSL 为 Unity 游戏 Sfera 编写的: https://bntr.itch.io/sfera。现在,它被重写为 GLSL,用于 three.js

在线体验: https://bntre.github.io/CurvedSpaceShader/

演示视频: https://www.youtube.com/watch?v=yhRXQAb-uh0

Video cover

效果背后的数学原理

Stereographic Projection

为了展示弯曲空间 (参见 Spherical Geometry), 每个 3D 模型都要经过一个特殊的变换,使用 4D 旋转和投影。

对于每个对象:

  1. 模型被缩放并放置在世界空间中心附近。
  2. 在顶点着色器中:
    • 3D 点被投影到 4D 单位球体 (x²+y²+z²+w²=1) 上。
    • 应用 4D 旋转 (每个对象都有自己的旋转)。
    • 使用球面投影将该点投影回 3D。

Projections

交互控制

鼠标滚轮 : 缩放

鼠标拖动 :

键盘 :

致谢

关于

Three.js 中的弯曲空间着色器 (通过 4D 球体投影)

资源

Readme

License

CC0-1.0 license Activity

Stars

1 star

Watchers

1 watching

Forks

0 forks