angular - Threejs: Rita armbåge med start- och slutradie
Jag är ny på Threejs. Jag försöker rita en armbåge med olika begin_radius och end_radius längs en kurvväg med curve_radius och en angle, men kunde inte uppnå resultat.
CylinderGeometryharbegin_radiusochend_radiusmen har ingen kurvad vägTorusGeometryharcurve_radiusochanglemen har intebegin_radiusochend_radius, och det är inte solitt.LatheGeometryhade samma begränsning somCylinderGeometryExtrudeGeometryhade samma begränsning somTorusGeometryTubeGeometryhade samma begränsning somTorusGeometry
Jag tittar förmodligen över de ovanstående geometriska formerna. Vänligen vägled mig med någon metod.
--REDIGERA: 1 juni 2020--
https://jsfiddle.net/arundhaj/ysfr8jb0 Jag har på något sätt lyckats utöka TubeGeometry för att uppnå variabel radie. Dock har jag fortfarande inte kunnat göra det solitt. Jag har tagit generateCap-funktionen från CylinderGeometry för att lägga till lock i början och slutet av bågen. Det fungerar bra när jag bara lägger till ett lock, men om jag lägger till båda locken blir formen förvrängd.
Vänligen hjälp.
Svar #1
Enligt mig tror jag att den bästa lösningen skulle vara att anpassa en torus-geometri för att ha åtminstone begin_radius och end_radius-parametrarna.
Det du skulle kunna göra är att ta originalfilen och ersätta det statiska radius-argumentet med en gradientdefinition där:
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 ); } }
Det återstående problemet skulle bara vara att förstå hur man korrekt ökar de rätta parametrarna, du skulle behöva testa lite för att förstå vilka parametrar du behöver ändra.
