Compare commits
3 Commits
21815b8c88
...
34f1b1c11f
Author | SHA1 | Date |
---|---|---|
wangqiujuan0808 | 34f1b1c11f | |
wangqiujuan0808 | 13c5c1a86f | |
wangqiujuan0808 | 71f00363bd |
|
@ -59,31 +59,21 @@ watch(() => props.sceneUrl, val => {
|
|||
init();
|
||||
loadSence();
|
||||
});
|
||||
let objArr = [];
|
||||
let objM = [];
|
||||
// 建筑树点击
|
||||
Bus.on('clickBuild', (isParent) => {
|
||||
// Todo
|
||||
console.log('clickBuild', isParent);
|
||||
if (!isParent) {// 点击子级
|
||||
var clickName = bimStore().activateTree.clickName;
|
||||
console.log(123, clickName);
|
||||
// 恢复之前被选中模型的材质
|
||||
if (selectedObject && selectedMaterial) {
|
||||
selectedObject.material = selectedMaterial;
|
||||
selectedObject = null;
|
||||
selectedMaterial = null;
|
||||
}
|
||||
cleanColor();
|
||||
var Floor = gltfObj.value.scene.getObjectByName(clickName);
|
||||
if (Floor.length > 0) {
|
||||
// 储存被选中的模型和材质
|
||||
selectedObject = Floor;
|
||||
selectedMaterial = selectedObject.material;
|
||||
}
|
||||
console.log(1, Floor);
|
||||
|
||||
Floor.traverse(e => {
|
||||
e.material = new THREE.MeshLambertMaterial({
|
||||
color: 0x00ff00,
|
||||
});
|
||||
nearCamera(e);
|
||||
})
|
||||
|
||||
}
|
||||
|
@ -107,12 +97,29 @@ onMounted(() => {
|
|||
renderScene();
|
||||
document.addEventListener("click", onMouseDown);
|
||||
});
|
||||
|
||||
const cleanColor = () => {
|
||||
|
||||
// 恢复之前被选中模型的材质
|
||||
if (objArr.length > 0 && objM.length > 0) {
|
||||
objArr.forEach((ele, index) => {
|
||||
console.log(objM[index]);
|
||||
ele.material = objM[index]
|
||||
})
|
||||
objArr = [];
|
||||
objM = [];
|
||||
}
|
||||
gltfObj.value.scene.traverse(e => {
|
||||
objArr.push(e);
|
||||
objM.push(e.material);
|
||||
})
|
||||
}
|
||||
const init = () => {
|
||||
scene = new THREE.Scene("#00ffff");
|
||||
// const texture = new THREE.TextureLoader().load(homeIcon);
|
||||
// texture.mapping = THREE.EquirectangularReflectionMapping;
|
||||
// scene.background = texture
|
||||
// scene.environment = texture
|
||||
const texture = new THREE.TextureLoader().load(homeIcon);
|
||||
texture.mapping = THREE.EquirectangularReflectionMapping;
|
||||
scene.background = texture
|
||||
scene.environment = texture
|
||||
|
||||
const canvas = document.querySelector("#three");
|
||||
var cubeLoader = new THREE.CubeTextureLoader();
|
||||
|
@ -127,11 +134,6 @@ const init = () => {
|
|||
// 将摄像机对准场景的中心
|
||||
camera.position.set(-192.936, 180.990, -28.179);
|
||||
camera.lookAt(scene.position);
|
||||
<<<<<<< HEAD
|
||||
|
||||
=======
|
||||
|
||||
>>>>>>> c61eb163e061fb935e88a57641d1dc70e363d7b5
|
||||
// 创建控件对象
|
||||
orbit = new OrbitControls(camera, renderer.domElement);
|
||||
orbit.autoRotate = true;
|
||||
|
@ -207,17 +209,12 @@ let selectedObject = null;
|
|||
let selectedMaterial = null;
|
||||
|
||||
const onMouseDown = (event) => {
|
||||
var raycaster = new THREE.Raycaster()
|
||||
// 恢复之前被选中模型的材质
|
||||
if (selectedObject && selectedMaterial) {
|
||||
selectedObject.material = selectedMaterial;
|
||||
selectedObject = null;
|
||||
selectedMaterial = null;
|
||||
}
|
||||
// 计算鼠标点击位置的归一化设备坐标
|
||||
mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
|
||||
mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;
|
||||
|
||||
var raycaster = new THREE.Raycaster()
|
||||
cleanColor();
|
||||
// 更新射线的起点和方向
|
||||
raycaster.setFromCamera(mouse, camera);
|
||||
// 计算射线和场景中所有可点击物体的相交情况
|
||||
|
@ -227,7 +224,6 @@ const onMouseDown = (event) => {
|
|||
const clickedObject = intersects[0].object;
|
||||
// 储存被选中的模型和材质
|
||||
selectedObject = clickedObject;
|
||||
selectedMaterial = clickedObject.material;
|
||||
// 修改材质为绿色
|
||||
selectedObject.material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
|
||||
nearCamera(intersects);
|
||||
|
@ -236,6 +232,7 @@ const onMouseDown = (event) => {
|
|||
}
|
||||
|
||||
const nearCamera = (intersects) => {
|
||||
console.log(5555, intersects)
|
||||
// 拉近场景
|
||||
if (!intersects[0]) {
|
||||
return;
|
||||
|
@ -260,6 +257,7 @@ const nearCamera = (intersects) => {
|
|||
const toHomeView = () => {
|
||||
camera.position.set(-192.936, 180.990, -28.179);
|
||||
camera.lookAt(scene.position);
|
||||
cleanColor();
|
||||
}
|
||||
// 返回主页
|
||||
const toHomeView1 = () => {
|
||||
|
|
Loading…
Reference in New Issue