3つの座標、つまりstart、mid、endを指定することで、three.jsでスプラインを描くことができます。そうすると、カーブは 'start'の座標から始まり、途中まで上がり、 'end'の座標まで下がります。これは同じもののjsbinです。three.jsでスプラインの下がり半分だけを描画する方法
しかし、ここではスプラインの下半分、つまり '中'から '終わり'の部分だけを描画したいと思います。
ただし、以下のように、下半分しか取得しませんが、シーンに合わせたいと思います。
編集:私は「シーンに合わせ」するだけ落ちる部分を望むについて言及
<html>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r75/three.js"></script>
<script>
// global variables
var renderer;
var scene;
var camera;
var geometry;
var control;
var count = 0;
var animationTracker;
init();
drawSpline();
function init()
{
// create a scene, that will hold all our elements such as objects, cameras and lights.
scene = new THREE.Scene();
// create a camera, which defines where we're looking at.
camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 0.1, 1000);
// create a render, sets the background color and the size
renderer = new THREE.WebGLRenderer();
renderer.setClearColor(0x000000, 1.0);
renderer.setSize(window.innerWidth, window.innerHeight);
// position and point the camera to the center of the scene
camera.position.x = 0;
camera.position.y = 40;
camera.position.z = 40;
camera.lookAt(scene.position);
// add the output of the renderer to the html element
document.body.appendChild(renderer.domElement);
}
function drawSpline(numPoints)
{
var numPoints = 100;
// var start = new THREE.Vector3(-5, 0, 20);
var start = new THREE.Vector3(-5, 0, 20);
var middle = new THREE.Vector3(0, 35, 0);
var end = new THREE.Vector3(5, 0, -20);
var curveQuad = new THREE.QuadraticBezierCurve3(start, middle, end);
var tube = new THREE.TubeGeometry(curveQuad, numPoints, 0.5, 20, false);
var mesh = new THREE.Mesh(tube, new THREE.MeshNormalMaterial({
opacity: 0.9,
transparent: true
}));
scene.add(mesh);
renderer.render(scene, camera);
}
</script>
</body>
</html>
以下のコードを追加します。私が意味していたのは、画像全体が占有しているほど、落ちる部分だけが占めることです。さもなければ、スプラインから「中間」の後に頂点だけを切り取ると、下の2番目の画像(塗料を使用して切り取ったもの)のように、スプラインの一部が非常に小さくなります。
あなたのjsBinは出力を生成しません。また、jsBinはinit、drawLine、drawSplineの3つの関数を定義していますが、drawLineは呼び出されない/呼び出されることはありません。 –
@AndrewWillems、あなたは出力を見ることができなかったことをお詫びします。私はもう一度点検し、私はそれを見ることができる。上記のコードを投稿してください。はい、drawLine()は不要ですが、無視することができます。 – PepperBoy
あなたのコメント/レスポンスの後にチェックしたところ、あなたのjsBinはFirefox(v45.0.1)では動作しませんが、Chromeでは動作します(v49.0.2623.87)。 –