Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在three.js平面中将png转换为高度_Javascript_Three.js - Fatal编程技术网

Javascript 在three.js平面中将png转换为高度

Javascript 在three.js平面中将png转换为高度,javascript,three.js,Javascript,Three.js,我正在three.js中可视化此图像 使用平面几何体,我想为对应于此图像的平面添加高度 (白色区域的高度更高) 我怎样才能做到这一点 这是我当前的简单three.js代码: <!DOCTYPE html> <html lang="en"> <head> <title>Vis</title> <style> body { margin: 0; height: 100

我正在three.js中可视化此图像 使用平面几何体,我想为对应于此图像的平面添加高度 (白色区域的高度更高)

我怎样才能做到这一点

这是我当前的简单three.js代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <title>Vis</title>
    <style>
      body {
        margin: 0;
        height: 100vh;
      }
      canvas {
        display: block;
      }
     </style>
</head>

<body>
    <script src="lib/three.js"></script>
    <script src="lib/OrbitControls.js"></script>
    <script>
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.z = 10;
var renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var geometry = new THREE.PlaneGeometry(15, 12);
var loader = new THREE.TextureLoader();
var material = new THREE.MeshLambertMaterial({
    map: loader.load('https://i.imgur.com/hHZICLa.jpg', render),
    side: THREE.DoubleSide
});
var mesh = new THREE.Mesh(geometry, material);
mesh.position.set(0, 0, 0);
scene.add(mesh);
var light = new THREE.DirectionalLight(0xffffff);
light.position.set(1, 1, 1);
scene.add(light);
var controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.addEventListener('change', render); // call this only in static scenes (i.e., if there is no animation loop)
controls.minDistance = 5;
controls.maxDistance = 50;
controls.minPolarAngle = 0.05;
controls.maxPolarAngle = Math.PI / 1.01;
controls.minAzimuthAngle = -Math.PI / 2.02;
controls.maxAzimuthAngle = Math.PI / 2.02;

function render() {
    renderer.render(scene, camera);
}
</script>
但我不知道如何将像素值作为高度加载,以及如何使其与图像的完全相同的像素或顶点相对应


感谢阅读

您可以在顶点着色器中使用。您只需切换到
MeshPhongMaterial
即可使用这种纹理


材质属性,并允许您根据需要调整效果。

您可以在顶点着色器中使用。您只需切换到
MeshPhongMaterial
即可使用这种纹理

材质属性,并允许您根据需要调整效果

for (var i = 0; i <  i < mesh.geometry.vertices.length; i++) {
    mesh.geometry.vertices[i].z = pixelvalue;
}