V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Like0602
V2EX  ›  前端开发

Three.js 问题求助大佬

  •  
  •   Like0602 · 2022-12-03 21:57:30 +08:00 · 919 次点击
    这是一个创建于 712 天前的主题,其中的信息可能已经有所发展或是发生改变。

    绘制多边形的 shape 只能传入二维坐标,我现在是二维平面但是是三维坐标也想做类似绘制多边形的效果,有什么方法吗?关键是三维坐标点与点之间的 xyz 都是不一样的

    5 条回复    2022-12-09 18:27:24 +08:00
    youtubbbbb
        1
    youtubbbbb  
       2022-12-04 06:50:55 +08:00
    明确一下,你是希望在三维空间里绘制二维多边形还是多面体?
    Like0602
        2
    Like0602  
    OP
       2022-12-04 18:53:54 +08:00
    类似二维多边形的
    Like0602
        3
    Like0602  
    OP
       2022-12-04 19:10:32 +08:00
    我在屏幕上点击得到一些点然后将这点依次连成线,然后想就这些点和线绘制多边形,大概就是在二维平面但实际上是三维坐标
    sakae010
        4
    sakae010  
       2022-12-09 18:26:19 +08:00
    二维坐标转三维就行了


    function screenPositionToWorld(pos, element, camera) {
    const vector = new THREE.Vector3(
    (pos.x / element.clientWidth) * 2 - 1,
    -(pos.y / element.clientHeight) * 2 + 1,
    0
    );
    camera.updateWorldMatrix();
    vector.unproject(camera);
    return vector;
    }
    sakae010
        5
    sakae010  
       2022-12-09 18:27:24 +08:00
    我这边用的 client 的宽和高,你那边可能要修改能你窗口的宽高
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3509 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:40 · PVG 12:40 · LAX 20:40 · JFK 23:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.