我有一个使用THREE.Terrain库生成的地形.我希望能够单击并拖出选取框并选择地形网格表面上的对象.
目前我正在检测拖动的开始和结束,并在全局XZ平面中绘制一个矩形,但我更喜欢它与表面齐平.
目前它看起来像这样;
然而,我的目标是更像这样的东西;
我想知道我是否错过了一些使用Core three.js功能的明显方法.
总是有强力方法在矩形周边周围以一定间隔投射光线,并创建一系列线段来近似投影矩形,但我想知道是否有本机方法.
(本周我才开始关注three.js,所以我可能错过了一些明显的东西......虽然我已经花了最后一天进行实验,并且没有太多运气)
更新
基于@ prisoner849的建议,我使用Terrain演示将他的代码混淆了,这似乎工作得很好.
varying vec2 vPos;
void main() {
vec2 Ro = size * .5;
vec2 Uo = abs( vPos - center.xz ) - Ro;
vec3 c = mix(vec3(1.), vec3(1.,0.,0.), float(enabled && (abs(max(Uo.x,Uo.y)) < lineHalfWidth) ));
gl_FragColor = vec4(c, float(enabled && (abs(max(Uo.x,Uo.y)) < lineHalfWidth) ));
}
`;
Run Code Online (Sandbox Code Playgroud)
代码需要大量清理,并且需要旋转编辑器以匹配摄像机视角,并且可以通过按住Ctrl键单击以添加到选择集等等.
但原则上片段着色器效果很好......