gpt4 book ai didi

angular - Threejs : Draw elbow with begin radius and end radius

转载 作者:行者123 更新时间:2023-12-04 09:50:53 28 4
gpt4 key购买 nike

我是 Threejs 的新手。我试图用不同的方式画一个肘部 begin_radiusend_radius沿着带有 curve_radius 的曲线路径和一个 angle ,却无法取得成果。

  • CylinderGeometrybegin_radiusend_radius但没有曲线路径
  • TorusGeometrycurve_radiusangle但没有 begin_radiusend_radius ,以及它不是固体。
  • LatheGeometry具有与 CylinderGeometry 相同的限制
  • ExtrudeGeometry具有与 TorusGeometry 相同的限制
  • TubeGeometry具有与 TorusGeometry 相同的限制

  • 可能我忽略了上述几何图形。请指导一些方法。

    --编辑:2020 年 6 月 1 日--

    https://jsfiddle.net/arundhaj/ysfr8jb0
    我以某种方式设法扩展了 TubeGeometry实现可变半径。然而还是无法让它稳固。
    我拍了 generateCap函数来自 CylinderGeomery在弧的开始和结束处添加上限。当我只添加一个盖子时它工作正常,但是如果我添加两个盖子,形状就会扭曲。

    请帮忙。

    enter image description here

    最佳答案

    在我看来,我认为最好的解决方案是自定义一个 thorus 几何体以至少拥有 begin_radiusend_radius参数。

    你能做的就是拿 original file并替换静态 radius那里的梯度定义参数:

    for ( j = 0; j <= radialSegments; j ++ ) {

    for ( i = 0; i <= tubularSegments; i ++ ) {

    var u = i / tubularSegments * arc;
    var v = j / radialSegments * Math.PI * 2;

    // vertex

    vertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );
    vertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );
    vertex.z = tube * Math.sin( v );

    vertices.push( vertex.x, vertex.y, vertex.z );

    // normal

    center.x = radius * Math.cos( u );
    center.y = radius * Math.sin( u );
    normal.subVectors( vertex, center ).normalize();

    normals.push( normal.x, normal.y, normal.z );

    // uv

    uvs.push( i / tubularSegments );
    uvs.push( j / radialSegments );

    }

    }


    剩下的问题只是了解如何正确增加正确的参数,您必须进行一些测试以了解需要更改哪些参数。

    关于angular - Threejs : Draw elbow with begin radius and end radius,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62014735/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com