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