javascript - 基于网格高度的颜色 Three.js

标签 javascript colors three.js mesh

我正在使用 Three.js 中的 STLLoader() 加载一个 STL 文件,并将其转换为网格。现在,我想根据高度为网格的每个立方体着色,如此处所附图片所示 screenshot-color-by-height .这在 Three.js 中是否可行?如果可行,最好的方法是什么?实际模型在这里:

https://casagroupproject.github.io/subpage1.html

最佳答案

只是一个关于如何使用顶点颜色制作它的概念:

var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.set(2, 5, 10);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

var controls = new THREE.OrbitControls(camera, renderer.domElement);

var light = new THREE.DirectionalLight(0xffffff, 0.5);
light.position.setScalar(10);
scene.add(light);
scene.add(new THREE.AmbientLight(0xffffff, 0.5));

var planeGeom = new THREE.PlaneBufferGeometry(10, 10, 10, 10);
planeGeom.rotateX(-Math.PI * 0.5);
var yMin = 0;
var yMax = 2;
var colors = [];
for (let i = 0; i < planeGeom.attributes.position.count; i++) {
  let yVal = THREE.Math.randInt(yMin, yMax);
  let yNorm = (yVal - yMin) / (yMax - yMin);
  planeGeom.attributes.position.setY(i, yVal);
  colors.push(yNorm, yNorm, 1);
}
planeGeom.addAttribute('color', new THREE.BufferAttribute(new Float32Array(colors), 3));
planeGeom.computeVertexNormals();

var mesh = new THREE.Mesh(planeGeom, new THREE.MeshStandardMaterial({
  vertexColors: THREE.VertexColors
}));
scene.add(mesh)

render();

function render() {
  requestAnimationFrame(render);
  renderer.render(scene, camera);
}
body {
  overflow: hidden;
  margin: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/92/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>

关于javascript - 基于网格高度的颜色 Three.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50426159/

相关文章:

javascript - 在多个浏览器窗口/选项卡中拖放

java - 在 Java 中,如何用两种不同的颜色绘制一个矩形?

javascript - 鼠标移动事件坐标不同

javascript - Three.js模型平滑多边形

javascript - onchange 与选择,选项和音频

javascript - $$hashKey 在 Angular 中 push() 新对象时不生成新值

python - matplotlib 中具有 N 个不同颜色阴影的条形图

android - 更改 Android 应用程序的 ActionBar 标题颜色

THREE.js 透明平面切割相邻物体纹理

javascript - 按浏览器后退按钮但不工作时尝试重定向到某个页面