three.js 给PLY增加根据Z值设置颜色值

		//    let          s = '../src/assets/ply/Result.ply'
		let s = plyUrl;  
		loader.load(s,
			function (geometry) {
				console.log('loader.load ');
				console.log(geometry);
				geometry.computeVertexNormals();

				const colorsArr = geometry.getAttribute('position').array.slice();
				//const colors = [];

				let colors = new Float32Array(colorsArr.length)
				console.log('colors', colorsArr)
				for (let i = 0; i < colorsArr.length; i++) {
					if ((i + 1) % 3 == 0)
					{
						colors[i-2] = Math.abs(colorsArr[i]) / 100;
						colors[i-1] = Math.abs(colorsArr[i]) / 400;
						colors[i-0] = Math.abs(colorsArr[i]) / 700;
						//colors.push(0.6, 0.5, Math.abs(colorsArr[i]) / colorsArr.length);
					}
						
				}

				console.log(colors)


				geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3, false));


				const material2 = new THREE.PointsMaterial({ size: 0.001, vertexColors: true, color: '#ffff00', });//THREE.VertexColors color: '#ffff00',
				//material2.sizeAttenuation = false; 		



				let mesh2 = new THREE.Points(geometry, material2);
				mesh2.position.x = 1;//0;
				mesh2.position.y = 2;//-1;
				mesh2.position.z = 3;//0;
				mesh2.scale.multiplyScalar(0.4);
				mesh2.castShadow = true;
				mesh2.receiveShadow = true;
				scene.add(mesh2);


				scene.background = new THREE.Color(0x52645b);
				console.log('loader.load OK');


				//}

				// 更新点云对象的顶点颜色属性
				// const attribute = new THREE.Uint8ClampedArray(colors).buffer;
				// geometry.setAttribute('color', new THREE.InterleavedBufferAttribute(attribute, 6, 39));


			},
			function (xhr) {
				//console.log((xhr.loaded / xhr.total) * 100 + "% loaded");
			},
			function (err) {
				console.error(err);
			}
		);

效果如下图 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用cv2.imread读取.ply文件时,需要注意以下几点。首先,cv2.imread方法默认是用于读取图像文件的,而.ply文件是一种三维模型文件。所以直接使用cv2.imread读取.ply文件可能会导致错误。其次,如果你想读取.ply文件中的点云数据,你可以使用专门用于读取三维模型的库,例如Open3D或者PCL。这些库提供了更方便的方法来读取和处理三维模型数据。你可以参考中提供的链接,了解如何配置OpenCV和PCL在VS2019中的方法。在你的编译运行过程中,你可能需要根据中提供的修改步骤来正确运行程序。当然,在进行.ply转.obj文件的过程中,你可能会遇到法向量方向相反的问题。你可以参考中提供的链接,使用MeshLab来解决这个问题,具体的操作是在MeshLab中选择filters -> normals, curvatures and orientation -> invert faces orientation。这样可以实现法向量的反向,并获得理想的网格。所以,如果你想使用cv2.imread读取.ply文件,我建议你先阅读中提供的链接,了解如何正确配置环境,并参考和中的步骤来进行相应的修改和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [彩色图和深度图获取点云文件(.ply .pcd)、ply和pcd相互转换、点云合并](https://blog.csdn.net/y18771025420/article/details/110528142)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [.PCD 转 .PLY 转 .OBJ](https://blog.csdn.net/m0_52835296/article/details/121653074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值