three.js三维网格套索工具

您好,
好心的,我想有人帮我开发“套索工具”在三维世界。
就像这张图片:
屏幕截图2019-10-04在6.10.29AM.png1289×410 KB,
用户将单击并拖动鼠标以在任何网格的表面上选择“closed area”(关闭区域)。
并基于所做的选择,他可以从网格中删除“封闭区域”。
我认为这是可能的。但不幸的是,我不知道该怎么做。
希望听到您的反馈。
谢谢
相关:找到网格28上的最短路径
一旦有了循环,您将需要使用循环作为边框,将网格分成两组三角形(假设网格是连接的,没有单独的“孤岛”)。我想我可以通过“整体填充”路径搜索所需的图形(实际上,深度优先或宽度优先并不重要)。
当有两个集合时,可能必须通过创建两个新几何体来分隔它们。
嗨,@EliasHasle感谢您的指点。
所以您确定它与“寻找最短路径”有关。
实际上,我对JS不太熟悉。
好吧,请让我说清楚一点好吗?
谢谢
我不确定这是否需要找到最短路径。例如,如果您可以分割多边形,您可能不必这样做,但我认为搜索最短路径可能会更容易,特别是因为您无论如何都需要一个用于分离步骤的图形表示。
我当然欢迎其他建议,因为搜索将导致光线投射的沉重负担。在高分辨率网格上实时“绘制”是其中一种情况,在这种情况下,自定义光线投射方法可能会派上用场(提示:空间索引、局部跟踪?)
我想应该有人提一下,这不是一项微不足道的任务。它将受益于被分成更小的任务/问题。
对JS有点熟练将是一个很好的首要任务。
了解鼠标如何与3d世界(光线投射网格)交互将是一个很好的下一步。
从那以后,这似乎落在了算法的领域,而且听起来会有相当多很少有人会这样做。
我会先做一个简单的方法(未优化),然后转向优化(空间索引等),似乎很容易或很难。
我认为网格的“三角形几何”应该被操纵。
在我看来:n1. 用户点击并移动鼠标。n2. n3. 并得到“三角形几何”,它有“raycaster”跟随鼠标移动。n4. n5. 设置“三角形几何”的中心点作为当第一点和最后一点之间的距离小于“定义的最小距离”时,构建“套索路径”n6. n7. ,它将通知路径可以通过释放鼠标来关闭。(虚线)n8. 删除“套索区域”中涉及的“三角形”。n9. 我想是这样的。(希望你理解我的意思。)如果我的想法接近目的,我该怎么做?当有两个集合时,可能需要通过创建两个新的几何图形来分离它们。,在这一步中,您所要做的就是重新排序/重建索引并创建两个renderGroups。DevArt:*用户单击并移动鼠标。并获取“三角形几何体”,它在鼠标移动后具有“raycaster”。将“三角形几何体”的中心点设置为构建的一个点“套索路径”问题1:默认情况下,鼠标移动时的光线投射会在网格的所有三角形上进行迭代,问题1是“套索路径”(lasso path)li ul。可能的解决方案:为您的对象优化光线投射。问题2:如果在mousemove事件被触发和处理之前鼠标移动过多个三角形,您不知道连接到哪里。问题1使情况变得更糟。可能的解决方法:寻找最短路径。问题3:使用三角形中心将需要您拆分三角形,这将使工作更加复杂。可能的解决方案是:选择最近的顶点。@pailhead是正确的,这绝非小事。这是可行的,但需要付出巨大的努力。如果你能做到这一点,我相信社区会很高兴分享一些有用的东西。谢谢。但是不能确定。如果可能的话,我想一起解决。一起解决可能也不错。我现在没有时间。我想我至少需要一到两天的时间来让原型工作(或“工作”)……我建议你做更多的研究,分享你拥有的以及你认为自己能够解决的问题,然后寻求更狭隘的帮助。收集更多的建议也无妨,包括对我提出的问题和解决方案的评估。嗨,@EliasHasle我已经在我的git存储库上向你发出了邀请。https://github.com/DevArt002/3d-editor41这个这个项目就是我做的。我想听听你的意见。我克隆了它,并运行了这个示例。还没看过code。看起来您已经在低多边形网格上平滑地进行了光线投射。如果你想平滑地分割它,我认为你必须分割三角形,而不仅仅是跟随顶点。这真的不是我所能想到的那么简单。编辑:我有一些关于三角形分割的未完成的code,是为我的游戏解决方案而准备的:编写游戏和编程挑战,让code变得更好12制作一个三角形列表来添加到每个新的几何体中肯定不是不可能的。Hi,@EliasHasle。p>你周末过得怎么样?刚刚看到你的留言。是的,我知道这条线在模型表面没有对齐。header>stackoverflow.com在符合其曲面16的三维模型上绘制一条线javascript,three.js由Dave Shepardo
询问,晚上11:44PM-22 2月17日协调世界时我找到了这个。你觉得怎么样。我还不明白这一点。我想,一旦我能在曲面上画线,我就可以从线中挤出网格,然后使用3csg.js及csg.js. 但我认为这很难实现,如果你站在我这边,我想知道你的想法。谢谢。div>div:是的,我知道这条线在模型的表面没有对齐。我以前用合适的鼠标尝试演示时没有注意到这条线的绘制。似乎只有当相机处于某个最小距离或更长距离时,绘图才有效。您发布的SO链接引用了与我概述的相同的方法,即使用搜索算法搜索最短路径。不过,A*比Dijkstra或广度优先搜索更适合,因为它专注于找到指向某个特定点的路径,而不是所有点的路径。Hi,@EliasHasleGreatp>,我希望你也检查一下这个。通过区域问题获得相交的面>你好[41%20AM]我已经实现了粗略的套索选择。我想选择不同颜色的区域。我不知道该怎么称呼它。但似乎是“多个相交面”。请帮我做这个。谢谢你的关注。我从来没有使用过这个技术,所以如果我说的是废话,请原谅我……但这不是更容易与GPU挑选?您绘制的区域定义了一个像素阵列,然后为每个面指定了唯一的颜色,然后检查每个像素中的颜色以检索定义区域中的所有面?编辑:不会选择背景中的人脸,不过…谢谢你的建议,@felixmariotto,strong。但是因为我是新来的Three.js,好像我没听懂。你是说GLSL?是的,像这样的14,我自己也从来没有用过这个技巧,所以这完全是理论上的……谢谢,@felixmariotto,但是,我是GLSL的新手……felixmariotto的建议不错。参考资料提供了一种基于GPU的拾取的简单方法,这是高级光线投射方法的替代方法。我建议使用鼠标位置的知识来修改相机投影(仅用于拾取的相机),以便只渲染单击的像素。这还需要将渲染目标尺寸设置为1x1。无论如何,GPU拾取不一定能解决连接点的基本挑战。有人在网格上实现过套索工具吗?我需要你的帮助
10. 并获取“三角形几何体”,它在鼠标移动后具有“raycaster”。n11. n12. 将“三角形几何体”的中心点设置为构建的一个点“套索路径”问题1:默认情况下,鼠标移动时的光线投射会在网格的所有三角形上进行迭代,问题1是“套索路径”(lasso path)li ul。可能的解决方案:为您的对象优化光线投射。问题2:如果在mousemove事件被触发和处理之前鼠标移动过多个三角形,您不知道连接到哪里。问题1使情况变得更糟。可能的解决方法:寻找最短路径。问题3:使用三角形中心将需要您拆分三角形,这将使工作更加复杂。可能的解决方案是:选择最近的顶点。@pailhead是正确的,这绝非小事。这是可行的,但需要付出巨大的努力。如果你能做到这一点,我相信社区会很高兴分享一些有用的东西。谢谢。但是不能确定。如果可能的话,我想一起解决。一起解决可能也不错。我现在没有时间。我想我至少需要一到两天的时间来让原型工作(或“工作”)……我建议你做更多的研究,分享你拥有的以及你认为自己能够解决的问题,然后寻求更狭隘的帮助。收集更多的建议也无妨,包括对我提出的问题和解决方案的评估。嗨,@EliasHasle我已经在我的git存储库上向你发出了邀请。https://github.com/DevArt002/3d-editor41这个这个项目就是我做的。我想听听你的意见。我克隆了它,并运行了这个示例。还没看过code。看起来您已经在低多边形网格上平滑地进行了光线投射。如果你想平滑地分割它,我认为你必须分割三角形,而不仅仅是跟随顶点。这真的不是我所能想到的那么简单。编辑:我有一些关于三角形分割的未完成的code,是为我的游戏解决方案而准备的:编写游戏和编程挑战,让code变得更好12制作一个三角形列表来添加到每个新的几何体中肯定不是不可能的。Hi,@EliasHasle。p>你周末过得怎么样?刚刚看到你的留言。是的,我知道这条线在模型表面没有对齐。header>stackoverflow.com在符合其曲面16的三维模型上绘制一条线javascript,three.js由Dave Shepardo
询问,晚上11:44PM-22 2月17日协调世界时我找到了这个。你觉得怎么样。我还不明白这一点。我想,一旦我能在曲面上画线,我就可以从线中挤出网格,然后使用3csg.js及csg.js. 但我认为这很难实现,如果你站在我这边,我想知道你的想法。谢谢。div>div:是的,我知道这条线在模型的表面没有对齐。我以前用合适的鼠标尝试演示时没有注意到这条线的绘制。似乎只有当相机处于某个最小距离或更长距离时,绘图才有效。您发布的SO链接引用了与我概述的相同的方法,即使用搜索算法搜索最短路径。不过,A*比Dijkstra或广度优先搜索更适合,因为它专注于找到指向某个特定点的路径,而不是所有点的路径。Hi,@EliasHasleGreatp>,我希望你也检查一下这个。通过区域问题获得相交的面>你好[41%20AM]我已经实现了粗略的套索选择。我想选择不同颜色的区域。我不知道该怎么称呼它。但似乎是“多个相交面”。请帮我做这个。谢谢你的关注。我从来没有使用过这个技术,所以如果我说的是废话,请原谅我……但这不是更容易与GPU挑选?您绘制的区域定义了一个像素阵列,然后为每个面指定了唯一的颜色,然后检查每个像素中的颜色以检索定义区域中的所有面?编辑:不会选择背景中的人脸,不过…谢谢你的建议,@felixmariotto,strong。但是因为我是新来的Three.js,好像我没听懂。你是说GLSL?是的,像这样的14,我自己也从来没有用过这个技巧,所以这完全是理论上的……谢谢,@felixmariotto,但是,我是GLSL的新手……felixmariotto的建议不错。参考资料提供了一种基于GPU的拾取的简单方法,这是高级光线投射方法的替代方法。我建议使用鼠标位置的知识来修改相机投影(仅用于拾取的相机),以便只渲染单击的像素。这还需要将渲染目标尺寸设置为1x1。无论如何,GPU拾取不一定能解决连接点的基本挑战。有人在网格上实现过套索工具吗?我需要你的帮助
Lasso tool for 3D meshn

three.js[已解决]正交摄影机的变换控件:gizmos缩放问题

您好,我正在使用带轨道控制的正交摄影机。我注意到当缩放照相机变焦不改变相机的位置(如透视相机)。首先,我想知道为什么这两个相机的实现方式不同?第二,我也在使用TransformControls,对于透视摄影机,更新功能上的小控件的重新缩放在这个等式中非常有效>但是使用OrbitControls更改缩放而不是正交摄影机的位置时,它没有正常工作。我试着像这样在等式中添加缩放,但没有得到任何好的结果>我应该以不同的方式包括它吗?我应该使用其他控件吗?谢谢大家的帮助!NaDaMa:首先,我很想了解为什么这两个摄像头...

日期:2021-12-11 08:00:01 浏览:1739

three.js多次渲染同一模型(obj模型),FPS要低得多

我试图在程序中渲染150个相同的树模型,但FPS突然从60下降到30+。你能告诉我什么是最好的解决办法吗?非常感谢。和平与爱。skr有两种典型的方法可以解决这个性能问题(太多的绘制调用):- 使用实例化渲染- 将所有几何体合并为一个几何体(因此只有一个网格)...

日期:2021-12-11 08:00:02 浏览:1746

three.js可缩放场景背景

three.js大家好,我有一个场景,由一个物体(反射雕像)组成,保持在一个漂亮背景的中心。我一直在使用威尼斯日落矩形hdr地图作为我的场景背景它既可以作为环境地图,也可以作为背景我看到背景不会与场景中渲染的网格一起缩放。这给人一种场景完全是假的感觉。i、 e状态向上/向下缩放,但背景不缩放。目前,我已经禁用了放大/缩小功能,这样用户就不会感到害怕。我的问题是:1. 当轨道控制放大/缩小时,我是否需要在此处使用一些着色器魔法来放大或缩小场景背景,以便看起来场景中的所有对象都在均匀缩放?或者这根本不可能做到?...

日期:2021-12-11 09:00:02 浏览:1272

three.js移动导入的Gltf模型

three.js我导入了我的gltf模型并将其添加到场景中,但现在如果我尝试移动它,它将不会=新建三、几何();var=混音器( 模型动画[0]>如何移动模式?Prakar_Srivastava:var>3D对象不能是Geometry或BufferGeometry类型。它应该是Object3D或类似Mesh、Points或Line的派生类的实例。在您的情况下,我只是这样声明变量:var mode;在动画循环中,执行以下操作:如果(mod!==未定义)>还请记住,基本3D场景的重要部分在代码片段中丢失(例如相...

日期:2021-12-11 10:00:01 浏览:1111

three.js平面明暗处理的问题

three.js嗨!我在项目中使用节点材质。我在模型渲染方面有问题。它看起来像是真实的平面阴影。如何平滑多边形?也有点像低分辨率阴影纹理贴图的自阴影。可能不是,但可能是。@Arkadiy\\u Vinkovskiy您需要在您的帖子中添加更多细节。屏幕截图不足以说明这里发生了什么。始终包括引起问题的代码,如果您使用的是模型,也要包括这些代码。更好的是,使用codepe制作一个工作示例...

日期:2021-12-11 10:00:02 浏览:997

three.js如何渲染立方体材质?

您好,直到昨天,我才相信Object3D是一组网格,而网格是一组几何体+材质,每个对象只有一个对象。我发现了立方体材质的结构,因此object3D的网格包含1个几何体(boxGeometry)和6个材质!所以问题是,这种网格的渲染效果如何?有关于它的文件吗?(这是为了提高我对three.js)非常感谢还有其他问题,与我的上一个帖子相关,如果一个网格中可能有多个材质,如何设置CustomDistanceMaterial以考虑所有材质的所有贴图?elysium11:所以问题是,渲染如何在这种类型的网格上工作?您...

日期:2021-12-11 11:00:03 浏览:856

three.js如何创建要在网格中拟合的线段

three.js伙计们,我想帮忙,假设我有一个这样的网格图像718×729 1.25 KB我想在网格面内创建线段,也就是说,我想将网格转换成这样的线图像710×828 740字节有人能帮忙吗???...

日期:2021-12-11 12:00:01 浏览:908

three.jsGLTFLoader.js这是我的登记簿错误

three.js每当我试着做决定的时候3.GLTFLoader对象我收到此错误代码:“未捕获类型错误:这是我的登记簿不是一个函数“我需要帮助!由Penta#u Trax在post#5中解决我最终发现我一直在使用错误的文件,当你需要使用jsm/example时,我使用的是js/example。其他东西也是个问题。但这是问题的基础。你能给我们看看你的代码吗?通常,如果你使用的是import语句,GLTFLoader不需要在前面加三个字符。好的,所以在这之前,我刚刚关注了这个视频,因为它是去年发布的。但是现在我试...

日期:2021-12-11 12:00:02 浏览:1068

three.js使用threejs的光流

嘿,我需要通过我的屏幕显示一束移动的光束。我不想使用任何模型或动画。我想知道我是否可以单独使用threejs来实现这一点。我也应该能够控制其运动的颜色强度和路径。嗨!也许这会有帮助:GitHub-jeromeetienne/三倍体积聚光灯: three.js扩展以提供体积聚光灯13,用于可视化光锥。您可以使用THREE.Curve()设置其路径。控制颜色强度,可能取决于曲线上的位置,也可以使用tween.js或者GSAP用于复杂的动画。创造力取决于您这是您想要的吗?https://threejs.org/e...

日期:2021-12-11 13:00:01 浏览:1314

three.js使用光线投射动态绘制多边形

我要画多边形three.js具有交点。为此,我使用下面的函数。首先,我使用光线投射器在第一个交点的第一个点添加球体。每次单击后,在交点处创建新球体,并在该交点和上一点之间创建线。现在,我希望在第一次单击时关闭多边形指向或单击该点周围。如何实现此目标。raycaster params是否与网格一起工作以检测鼠标位置周围的网格?function checkIntersectionclick() = raycaster.intersectObjects(addedObject, true);if (interse...

日期:2021-12-11 13:00:02 浏览:868