ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

HyperRogue的20+种几何投影全解析:从圆盘到鱼眼的渲染秘密

HyperRogue的20+种几何投影全解析:从圆盘到鱼眼的渲染秘密 HyperRogue的20种几何投影全解析从圆盘到鱼眼的渲染秘密【免费下载链接】hyperrogueA SDL roguelike in a non-euclidean world项目地址: https://gitcode.com/gh_mirrors/hy/hyperrogueHyperRogue 是一款运行在非欧几里得双曲世界中的 SDL 角色探索游戏roguelike其核心魅力之一在于它内置了20 多种几何投影可以把无限大的双曲平面压缩到你的屏幕上看。本文将带你从最经典的庞加莱圆盘投影一路讲到鱼眼投影揭秘每种投影的数学思想与渲染效果并给出源码位置方便你动手试验。 为什么双曲世界需要投影双曲平面是无限延展且曲率处处为负的无法直接画进一个有边框的窗口。游戏必须用投影把双曲点映射到屏幕坐标的函数来做可视化。所有可用的投影在eModel枚举中定义从mdDisk圆盘一直到mdConformalEgg共 50 余项定义位置classes.cpp每种投影的名称表双曲/欧氏/球面三种几何下的叫法见mdinfclasses.cpp这张 1024×1024 的纹理贴图会贴在 3D 模型表面配合 HyperRogue 的几何投影渲染——通过它你能直观看到投影如何弯曲空间。 经典三剑客圆盘、半平面与带状投影特点源码枚举圆盘Poincaré disk保角、最经典Escher 风格的无穷套娃感mdDisk半平面上半平面保角与圆盘等距变换等价适合看地平线mdHalfplane带状Mercator保角的圆柱式投影可水平滚动像一张无限长的纸mdBand圆盘投影是 HyperRogue 的门面靠近边界越收缩一眼就能看到无穷远。半平面则把无穷远放到一条直线上探索时路的感觉更直接。 等距与等积数学家的取舍没有任何投影能同时保住距离和面积HyperRogue 把这套取舍做成了可切换选项等距equidistant保从中心出发的距离如azimuthal equidistantmdEquidistant等积equi-area保面积如azimuthal equi-areamdEquiarea、MollweidemdMollweide、sinusoidalmdSinusoidal、CollignonmdCollignon等体积mdEquivolume让体积在视觉上一致地图学移植Miller、Gall stereographic、Winkel tripel、Aitoff、Hammer 等地球投影也全部搬到了双曲世界mdMiller、mdGallStereographic等 实用技巧想量距离就用等距投影想判断这块区域有多大就切等积投影。 空间感投影双曲面、半球与真实透视这一类投影把双曲空间渲染成三维曲面在窗口里旋转空间纵深感极强ball modelmdBall把平面鼓起成球Minkowski hyperboloidmdHyperboloid最正统的双曲几何模型hemispheremdHemisphere上半球适合俯瞰native perspectivemdPerspective与geodesicmdGeodesic模拟相机沿测地线看向平面relativistic perspectivemdRelPerspective、Lie perspectivemdLiePerspective用相对论/Lie 群几何定义的物理式透视边缘会出现类似引力透镜的变形 鱼眼、Joukowsky 与奇趣变换这是最能体现渲染秘密的部分——每个投影背后都是一个复变函数或群作用fisheyemdFisheye与 variant fisheyemdFisheye2径向非线性拉伸产生鱼眼镜头观感Joukowsky transformmdJoukowsky及其逆复合mdJoukowskyInverted源自空气动力学的保角变换画面会出现漂亮的绕翼流线感rotated hyperbolesmdRotatedHyperboles旋转双曲线族扭曲出漩涡效果spiral/ringmdSpiral螺旋坐标世界绕成环状conformal square / conformal eggmdConformalSquare、mdConformalEgg把无穷平面塞进正方形或蛋形里且保持保角retroazimuthal 三兄弟mdRetroCraig、mdRetroLittrow、mdRetroHammer反方位投影任意点到中心都直来直去还有mdPolar极坐标、mdTwoPoint/mdThreePoint多点等距、mdCentralInversion中心反演等⚙️ 投影在代码里是怎么落地的配置结构projection_configuration持有当前投影eModel、中心、缩放等参数定义见 hyper.h元信息表mdinf为每个投影保存三种几何下的显示名与能力标志保角、等积、带状、透视……游戏菜单据此生成列表GPU 加速开启 shader 后部分投影直接用着色器计算由consider_shader_projection控制见 hyper.h自定义投影RogueViz 允许把新投影动态追加进mdinf扩展入口在 rogueviz/extra-projections.cpp️ 在游戏中快速切换投影的完整步骤进入游戏后按v打开设置菜单在投影Projection选项中用鼠标滚轮滚动浏览 20 种投影选中回车按方向键PageUp/PageDown旋转视角按Home把画面中心对准自己想横着探索切band带状投影视野变成一条无限走廊 新手建议路线圆盘 → 半平面 → 双曲面hyperboloid→ 鱼眼 → Joukowsky五种看下来非欧几何的味道就有了。 延伸探索投影枚举与元信息classes.cpp投影配置结构hyper.h自定义投影扩展rogueviz/extra-projections.cpp更多非欧几何演示rogueviz/ 目录下的各个 demo 源文件平铺图案样例感受双曲镶嵌tessellations/sample/从圆盘到鱼眼HyperRogue 把同一张地图的 50 种看法变成了一个可以即点即玩的画廊。挑一个投影开一局你眼中的双曲世界从此有了第二种形状。【免费下载链接】hyperrogueA SDL roguelike in a non-euclidean world项目地址: https://gitcode.com/gh_mirrors/hy/hyperrogue创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表