Questions tagged «selection»

4
投射射线以选择体素游戏中的方块
我正在开发一款具有类似于Minecraft的地形且由块组成的游戏。由于基本渲染和块加载现已完成,因此我想实现块选择。 因此,我需要找出第一人称相机所面对的障碍。我已经听说过要取消整个场景的投影,但是我决定反对,因为它听起来很hacky,而且不准确。也许我可以以某种方式向视图方向投射射线,但是我不知道如何用体素数据中的块检查碰撞。当然,此计算必须在CPU上完成,因为我需要结果才能执行游戏逻辑运算。 那么,如何找出相机前面的哪个块呢?如果可以的话,我该如何投射光线并检查碰撞?

6
如何使单位选择圈合并?
我想知道如何使合并圆选择产生这种效果。以下是说明图片: 基本上我正在寻找这种效果: 如何实现圆的合并效果?我没有发现有关此效果的任何解释。我知道投射这些纹理可以开发贴花系统,但是我不知道如何创建合并效果。 如果可能的话,我正在寻找纯粹的着色器解决方案。

3
在隐藏网格的位置/位置如何隐藏后处理的网格轮廓
我正在3D引擎中设置活动轮廓,为选定的3d角色或屏幕上的风景设置高光效果。在使用模板缓冲区并获得一些不满意的结果(形状问题为凹形,由于距相机的距离导致轮廓线厚度以及台式机和笔记本电脑之间的不一致)后,我切换到边缘检测和帧缓冲区采样并得到了轮廓很满意。 但是,当选定的网格位于另一个网格之后时,我无法隐藏轮廓。考虑到我的过程,这很有意义,因为在渲染场景的其余部分之后,我只是从帧缓冲区中渲染了2d着色器轮廓。 下面是我的结果的两个屏幕截图。第一个是“好”轮廓,第二个是在阻挡轮廓源的网格上看到轮廓的位置。 渲染过程如下所示:1)仅绘制突出显示的网格的alpha,在帧缓冲区(framebuffer1)中捕获黑色轮廓。 2)将纹理从framebuffer1传递到执行边缘检测的第二个着色器。在framebuffer2中捕获边缘。 3)渲染整个场景。 4)在场景顶部从framebuffer2渲染纹理。 我对如何完成工作有一些想法,希望能收到关于其有效性或更简单或更佳方法的反馈。 首先,我考虑过将整个场景渲染到帧缓冲区,并将突出显示的网格的可见轮廓存储在alpha通道中(所有白色保存,突出显示的网格可见)。然后,我将在alpha通道上执行边缘检测,渲染场景帧缓冲区,然后在顶部渲染边缘。结果是这样的: 为此,我想到了仅在突出显示对象的渲染过程中设置一个定义,该定义将为所有可见像素在alpha中绘制所有黑色。 我的第二个想法是使用上面概述的当前渲染过程,而且在渲染选定网格的轮廓时,还将X,Y和Z坐标存储在framebuffer1的R,G和B通道中。边缘检测将被执行并存储在framebuffer2中,但是我会将RGB / XYZ值从alpha的边缘传递到轮廓。然后,在渲染场景时,我将测试坐标是否在framebuffer2中存储的边缘内。如果是这样,我将测试当前片段的深度,以确定它是在从RGB通道提取的坐标之前还是之后(转换为相机空间)。如果片段在深度坐标之前,则片段将正常渲染。如果片段在后面,则将其呈现为纯轮廓颜色。 我正在为该项目使用LibGDX,并且希望支持WebGL和OpenGL ES,因此我没有涉及几何着色器或更新的GLSL函数的解决方案。如果有人可以评论我提出的方法或提出更好的建议,我将非常感激。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.