Three.js 创建网格辅助线,坐标轴辅助线,模型骨骼辅助线

three.js中的辅助线使用

1.网格辅助线(GridHelper)

2.坐标轴辅助线(AxesHelper)

3.模型骨骼辅助线(SkeletonHelper)

在上一篇 Three.js加载外部glb,fbx,gltf,obj 模型文件 的文章基础上新加入一个创建 辅助线的函数 createHelper 方法
1.网格辅助线和坐标轴辅助线的创建

	// 创建辅助线
	createHelper() {
		//网格辅助线
		this.gridHelper = new THREE.GridHelper(7, 17, 'rgb(193,193,193)', 'rgb(193,193,193)'); // 7 网格大小 17网格数量 rgb(193,193,193) 网格颜色
		this.gridHelper.position.set(0, -.59, -.1) //设置网格颜色
		this.gridHelper.visible = true // 设置网格显示和隐藏
		this.scene.add(this.gridHelper)
		// 坐标轴辅助线
		this.axesHelper = new THREE.AxesHelper(2);
		this.axesHelper.visible = false
		this.scene.add(this.axesHelper);
	}

2.模型骨骼辅助线的创建 SkeletonHelper,在加载模型文件的方法里去添加

	//加载模型
	setModel({ filePath, fileType, scale,  position }) {
		return new Promise((resolve, reject) => {
			const loader = this.fileLoaderMap[fileType]
			loader.load(filePath, (result) => {
			  //加载不同类型的文件
				switch (fileType) {
					case 'glb':
						this.model = result.scene		
						// 模型骨骼辅助线
						this.skeletonHelper = new THREE.SkeletonHelper(result.scene)
						break;
					case 'fbx':
						this.model = result
						break;
					case 'gltf':
						this.model = result.scene
						break;
					case 'obj':
						this.model = result
						break;
					default:
						break;
				}
				// 设置模型大小
				if (scale) {
					this.model.scale.set(scale, scale, scale);
				}
				// 设置模型位置 
				if (position) {
					const { x, y, z } = position
					this.model.position.set(x, y, z)
				}
				// 设置相机位置
				this.camera.position.set(0, 2, 6)
				// 设置相机坐标系
				this.camera.lookAt(0, 0, 0)
				this.skeletonHelper.visible = false
				// 添加模型骨骼辅助线
				this.scene.add(this.skeletonHelper)
	             // 将模型添加到场景中去   
				this.scene.add(this.model)
				resolve(true)
			}, () => {

			}, (err) => {
				console.log(err)
				reject()
			})
		})
	}

完整的代码可参考:https://gitee.com/ZHANG_6666/Three.js3D

界面效果:在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 three.js创建网格地板,可以使用 `Mesh` 类。首先,需要创建一个网格地板的几何体,可以使用 `PlaneGeometry` 类。然后,可以使用一个材质(如 `MeshBasicMaterial` 或 `MeshLambertMaterial`)来创建网格地板的外观。最后,将几何体和材质作为参数传递给 `Mesh` 构造函数,并将新创建网格地板添加到场景中。 例如: ``` // 创建网格地板的几何体 const geometry = new THREE.PlaneGeometry(width, height, widthSegments, heightSegments); // 创建网格地板的材质 const material = new THREE.MeshBasicMaterial({ color: 0xffffff }); // 创建网格地板 const mesh = new THREE.Mesh(geometry, material); // 将网格地板添加到场景中 scene.add(mesh); ``` 其中,`width` 和 `height` 分别指定网格地板的宽度和高度,`widthSegments` 和 `heightSegments` 分别指定沿网格地板宽度和高度方向的网格数。 ### 回答2: 在three.js创建网格地板需要经历以下步骤: 1. 首先,我们需要导入three.js库及其他必要的依赖文件。 ``` import * as THREE from 'https://cdn.skypack.dev/three@0.132.2/build/three.module.js'; ``` 2. 创建场景、相机和渲染器。 ``` const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); const renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); ``` 3. 创建网格地板的材质和几何体。 ``` const floorGeometry = new THREE.PlaneGeometry(10, 10, 10, 10); const floorMaterial = new THREE.MeshBasicMaterial({ color: 0x808080, wireframe: true }); ``` 4. 创建网格对象并将材质应用于它。 ``` const floor = new THREE.Mesh(floorGeometry, floorMaterial); scene.add(floor); ``` 5. 设置相机的位置和方向。 ``` camera.position.z = 5; camera.lookAt(floor.position); ``` 6. 创建动画循环函数,并在其中渲染场景。 ``` function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); } animate(); ``` 整个过程中,我们先创建了场景、相机和渲染器,然后定义了网格地板的材质和几何体。接下来,我们使用这些材质和几何体创建一个网格对象,并将它添加到场景中。然后,我们设置相机的位置和方向,以确保地板在可视范围内。最后,我们通过创建动画循环函数来持续渲染场景,使得地板可以旋转或进行其他动画效果。 这样,我们就成功地使用three.js创建了一个简单的网格地板。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值