diff --git a/src/utils/html_generator.py b/src/utils/html_generator.py index eeb4745..c6a10c9 100644 --- a/src/utils/html_generator.py +++ b/src/utils/html_generator.py @@ -210,6 +210,11 @@ class HTMLGenerator: const axesHelper = new THREE.AxesHelper(50); scene.add(axesHelper); + // 添加轨道控制器 - 必须在使用之前定义 + const controls = new THREE.OrbitControls(camera, renderer.domElement); + controls.enableDamping = true; + controls.dampingFactor = 0.25; + // 创建几何体(使用点云数据或模拟模具形状) const geometryData = {json.dumps(geometry_data, indent=2)}; const cavityData = {json.dumps(cavity_data, indent=2) if cavity_data else 'null'}; @@ -238,9 +243,9 @@ class HTMLGenerator: // 创建点云材质 const pointMaterial = new THREE.PointsMaterial({{ color: 0x4CAF50, - size: 0.5, + size: 1.0, transparent: true, - opacity: 0.8 + opacity: 0.9 }}); pointcloudMesh = new THREE.Points(pointGeometry, pointMaterial); @@ -251,6 +256,12 @@ class HTMLGenerator: pointGeometry.computeBoundingBox(); pointGeometry.boundingBox.getCenter(center); controls.target.set(center.x, center.y, center.z); + + // 根据边界框大小调整相机距离 + const boundingSphere = new THREE.Sphere(); + pointGeometry.boundingBox.getBoundingSphere(boundingSphere); + const cameraDistance = boundingSphere.radius * 3; + camera.position.set(cameraDistance, cameraDistance, cameraDistance); }} else {{ // 创建产品几何体(半透明绿色) const productGeometry = new THREE.BoxGeometry(width * 0.9, height * 0.9, depth * 0.9); @@ -338,11 +349,6 @@ class HTMLGenerator: camera.position.set(200, 200, 200); camera.lookAt(0, 0, 0); - // 添加轨道控制器 - const controls = new THREE.OrbitControls(camera, renderer.domElement); - controls.enableDamping = true; - controls.dampingFactor = 0.25; - // 动画循环 function animate() {{ requestAnimationFrame(animate);