【发布时间】:2021-12-12 00:39:33
【问题描述】:
我有一系列线条,我需要用颜色为线条下方或线条之间的所有区域着色。
为了简单起见,我创建了一个带有闭合线的 sn-p。 实际上,我有一个绘制多条线的程序(如股市图表),我需要为图表下方的所有区域着色。另请参阅屏幕截图。
如果我可能需要采取任何帮助甚至新方法,我将不胜感激。
<html>
<head>
<title>My first three.js app</title>
<style>
body {
margin: 0;
}
canvas {
width: 100%;
height: 100%
}
</style>
</head>
<body>
<script src="https://threejs.org/build/three.min.js"></script>
<script>
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 500);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
function createLine(startX,startY,endX,endY) {
const geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(startX, startY, 0));
geometry.vertices.push(new THREE.Vector3(endX, endY, 0));
const material = new THREE.LineBasicMaterial({
color: 0xffffff
});
return new THREE.Line(geometry, material);
}
scene.add(createLine(0,0,1,0));
scene.add(createLine(1,0,1,1));
scene.add(createLine(1,1,0,1));
scene.add(createLine(0,1,0,0));
camera.position.z = 5;
var animate = function () {
requestAnimationFrame(animate);
renderer.render(scene, camera);
};
animate();
</script>
</body>
</html>
【问题讨论】:
-
我对 three.js 不太熟悉,但是为了给图表上色,我猜你需要画一个大的形状,而不是很多单独的线。还是我完全错了?
-
不知道。这就是问题所在。如果您尝试提出解决方案会很高兴:) 我当然可以用附加线“关闭”图表。这就是为什么我附上了简单的sn-p,它是4条闭合线。让事情变得简单。
-
作为一个选项,您可以使用
THREE.PlaneGeometry()并更改其上顶点。
标签: javascript three.js