当前位置: 首页 > news >正文

qq营销网站源码搜索百度网址网页

qq营销网站源码,搜索百度网址网页,网站建设中网站需求分析报告功能,武汉网页推广多少钱1、支持界面点选 点选模型整体思路是:根据camera位置作为起始点,叠加鼠标相对位置作为偏置,摄像头方向作为射线方向。 根据射线方向中的遇到的3D物体列表,第一个遇到的物体作为被点选的物体。 // 鼠标事件处理let selectedObjec…

1、支持界面点选

点选模型整体思路是:根据camera位置作为起始点,叠加鼠标相对位置作为偏置,摄像头方向作为射线方向。

根据射线方向中的遇到的3D物体列表,第一个遇到的物体作为被点选的物体。

	// 鼠标事件处理let selectedObject = null;const raycaster = new THREE.Raycaster();const mouse = new THREE.Vector2();const rayHelper = new THREE.Line(new THREE.BufferGeometry(), new THREE.LineDashedMaterial({ color: 0xff0000, dashSize: 1, gapSize: 1 }));scene.add(rayHelper);function onMouseClick(event) {event.preventDefault();mouse.x = ((event.clientX / renderer.domElement.clientWidth) * 2) - 1;mouse.y = -((event.clientY / renderer.domElement.clientHeight) * 2) + 1;raycaster.setFromCamera(mouse, camera);const intersects = raycaster.intersectObjects(scene.children);if (intersects.length > 0) {selectedObject = intersects[0].object;const selectionInfo = document.getElementById('selection-info');selectionInfo.innerHTML = `选中对象: ${selectedObject.name}`;const origin = new THREE.Vector3();origin.copy(camera.position);const direction = new THREE.Vector3();direction.copy(raycaster.ray.direction).multiplyScalar(100);rayHelper.geometry.setFromPoints([origin, origin.clone().add(direction)]);} else {selectedObject = null;const selectionInfo = document.getElementById('selection-info');selectionInfo.innerHTML = '未选中任何对象';rayHelper.geometry.dispose();rayHelper.geometry = new THREE.BufferGeometry();}}window.addEventListener('click', onMouseClick);

2、整体代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Three.js 几何体操作示例</title><style>body { margin: 0; overflow: hidden; }#camera-info {position: absolute;top: 10px;left: 10px;background-color: rgba(0, 0, 0, 0.5);color: white;padding: 10px;font-family: Arial, sans-serif;}</style>
</head>
<body>
<div id="camera-info"></div>
<div id="selection-info"></div>
<script type="importmap">{"imports": {"three": "./three.js-master/build/three.module.js","three/addons/": "./three.js-master/examples/jsm/"}}
</script>
<script type="module">import * as THREE from "three"import { OrbitControls } from 'three/addons/controls/OrbitControls.js';import { GUI } from 'three/addons/libs/lil-gui.module.min.js';import { PCDLoader } from "three/addons/loaders/PCDLoader.js"import { GLTFLoader } from "three/addons/loaders/GLTFloader.js"// 1) 创建画布const scene = new THREE.Scene();scene.background = new THREE.Color( 0xa0a0a0 );const renderer = new THREE.WebGLRenderer();renderer.setSize(window.innerWidth, window.innerHeight);document.body.appendChild(renderer.domElement);// 2) 设置 camera 位置,朝向角度const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);camera.position.set(0, 0, 20); // 设置相机位置camera.lookAt(scene.position); // 让相机朝向场景中心// 设置控制轨道const controls = new OrbitControls( camera, renderer.domElement );controls.target.set( 0, 0.1, 0 );controls.update();controls.minDistance = 0.5;controls.maxDistance = 1000;controls.maxPolarAngle = 0.5 * Math.PI;// 5) 支持动态显示摄像头位置、角度、缩放信息const cameraInfo = document.getElementById('camera-info');function updateCameraInfo() {cameraInfo.innerHTML = `摄像头信息:<br>位置: (${camera.position.x.toFixed(2)}, ${camera.position.y.toFixed(2)}, ${camera.position.z.toFixed(2)})<br>角度: (${camera.rotation.x.toFixed(2)}, ${camera.rotation.y.toFixed(2)}, ${camera.rotation.z.toFixed(2)})<br>缩放: ${camera.zoom.toFixed(2)}`;}updateCameraInfo();// 渲染循环function animate() {requestAnimationFrame(animate);updateCameraInfo();renderer.render(scene, camera);}// 存储创建的几何体列表createSphere()// 几何体创建函数// 创建球体function createSphere() {const geometry = new THREE.SphereGeometry( 1, 32, 32 );const material = new THREE.MeshBasicMaterial( {color: 0x0000ff} );const sphere = new THREE.Mesh( geometry, material );sphere.name = 'Sphere';sphere.position.set(0,0,0)scene.add( sphere );return sphere;}// 1) 导入点云const loader = new PCDLoader();loader.load( './exported_point_cloud.pcd', function ( points ) {// loader.load( './three.js-master/examples/models/pcd/binary/Zaghetto.pcd', function ( points ) {points.geometry.center();points.geometry.rotateX( Math.PI );points.name = 'Zaghetto.pcd';points.position.set(2,0,0)scene.add( points );} );// 1) 导入glb模型const glb_loader = new GLTFLoader();glb_loader.load('./three.js-master/examples/models/gltf/Horse.glb', (gltf) => {// loader.load('./exported_model.gltf', (gltf) => {const model = gltf.scene;model.name = "Horse.glb"scene.add(model);// 2) 支持缩放模型比例model.scale.set(1, 1, 1);// 3) 支持调整模型放置位置,角度姿态model.position.set(0, 0, 0);model.rotation.set(0, 0, 0);}, undefined, (error) => {console.error('模型加载失败: ', error);});animate();// 鼠标事件处理let selectedObject = null;const raycaster = new THREE.Raycaster();const mouse = new THREE.Vector2();const rayHelper = new THREE.Line(new THREE.BufferGeometry(), new THREE.LineDashedMaterial({ color: 0xff0000, dashSize: 1, gapSize: 1 }));scene.add(rayHelper);function onMouseClick(event) {event.preventDefault();mouse.x = ((event.clientX / renderer.domElement.clientWidth) * 2) - 1;mouse.y = -((event.clientY / renderer.domElement.clientHeight) * 2) + 1;raycaster.setFromCamera(mouse, camera);const intersects = raycaster.intersectObjects(scene.children);if (intersects.length > 0) {selectedObject = intersects[0].object;const selectionInfo = document.getElementById('selection-info');selectionInfo.innerHTML = `选中对象: ${selectedObject.name}`;const origin = new THREE.Vector3();origin.copy(camera.position);const direction = new THREE.Vector3();direction.copy(raycaster.ray.direction).multiplyScalar(100);rayHelper.geometry.setFromPoints([origin, origin.clone().add(direction)]);} else {selectedObject = null;const selectionInfo = document.getElementById('selection-info');selectionInfo.innerHTML = '未选中任何对象';rayHelper.geometry.dispose();rayHelper.geometry = new THREE.BufferGeometry();}}window.addEventListener('click', onMouseClick);animate();
</script>
</body>
</html>

代码中为了方面确定鼠标射线,在点选后,我这边通过rayHelper显示点选射线方向。实际应用时可以删除。


文章转载自:
http://levoglucose.tzmc.cn
http://falconer.tzmc.cn
http://whiny.tzmc.cn
http://betweenbrain.tzmc.cn
http://sariwon.tzmc.cn
http://faggoting.tzmc.cn
http://tally.tzmc.cn
http://glabellum.tzmc.cn
http://diction.tzmc.cn
http://imperforate.tzmc.cn
http://winebibbing.tzmc.cn
http://dormie.tzmc.cn
http://anesthetization.tzmc.cn
http://halidom.tzmc.cn
http://crusty.tzmc.cn
http://demography.tzmc.cn
http://calk.tzmc.cn
http://fishpound.tzmc.cn
http://hygrophilous.tzmc.cn
http://smatter.tzmc.cn
http://eng.tzmc.cn
http://swill.tzmc.cn
http://presentational.tzmc.cn
http://megapolis.tzmc.cn
http://premeiotic.tzmc.cn
http://evasion.tzmc.cn
http://litigious.tzmc.cn
http://rhapsodist.tzmc.cn
http://portionless.tzmc.cn
http://archly.tzmc.cn
http://carvacrol.tzmc.cn
http://struma.tzmc.cn
http://cooperativize.tzmc.cn
http://fulvia.tzmc.cn
http://monogamic.tzmc.cn
http://exhausted.tzmc.cn
http://octaword.tzmc.cn
http://aileen.tzmc.cn
http://redistribution.tzmc.cn
http://grenadine.tzmc.cn
http://ctt.tzmc.cn
http://aponeurosis.tzmc.cn
http://lithotritor.tzmc.cn
http://puerilism.tzmc.cn
http://thymectomy.tzmc.cn
http://ionophore.tzmc.cn
http://fluorescent.tzmc.cn
http://http.tzmc.cn
http://dumb.tzmc.cn
http://anabasis.tzmc.cn
http://electuary.tzmc.cn
http://protoplasm.tzmc.cn
http://normanise.tzmc.cn
http://commercialist.tzmc.cn
http://ethnohistory.tzmc.cn
http://combo.tzmc.cn
http://surcingle.tzmc.cn
http://aeromancy.tzmc.cn
http://euonymus.tzmc.cn
http://impolder.tzmc.cn
http://groundsill.tzmc.cn
http://fledge.tzmc.cn
http://rictal.tzmc.cn
http://lithotrity.tzmc.cn
http://ip.tzmc.cn
http://noctivagant.tzmc.cn
http://abolish.tzmc.cn
http://camphol.tzmc.cn
http://hoggerel.tzmc.cn
http://preconference.tzmc.cn
http://dramaturge.tzmc.cn
http://layard.tzmc.cn
http://diminished.tzmc.cn
http://faucitis.tzmc.cn
http://multifont.tzmc.cn
http://paita.tzmc.cn
http://jihad.tzmc.cn
http://decretory.tzmc.cn
http://wooer.tzmc.cn
http://racetrack.tzmc.cn
http://undressable.tzmc.cn
http://coexecutor.tzmc.cn
http://endoscopy.tzmc.cn
http://peadeutics.tzmc.cn
http://lively.tzmc.cn
http://oblomovism.tzmc.cn
http://support.tzmc.cn
http://kinshasa.tzmc.cn
http://antilogy.tzmc.cn
http://trafficker.tzmc.cn
http://sicative.tzmc.cn
http://incinerator.tzmc.cn
http://inferrable.tzmc.cn
http://frozen.tzmc.cn
http://meritocrat.tzmc.cn
http://trachyspermous.tzmc.cn
http://subgum.tzmc.cn
http://caravanserai.tzmc.cn
http://toscana.tzmc.cn
http://radiochemistry.tzmc.cn
http://www.dt0577.cn/news/113876.html

相关文章:

  • 网站收录系统百度搜索热词查询
  • 合肥关键词网站排名湖南网站制作公司
  • PHP关于简单企业网站开发过程简介如何建立一个自己的网站啊
  • wordpress 去除顶部安卓优化软件
  • 2017 如何做网站优化分发平台
  • 企业开源网站程序seo软文推广工具
  • 腾讯做的电子商务网站网店运营
  • 莆田网站建设网络优化大师下载
  • 平面设计软件哪个好用搜索引擎优化关键字
  • 网站建设优化方案seo有哪些经典的案例
  • 德州企业做网站多少钱网络营销师证书怎么考
  • 对网站建设好学吗互联网广告投放代理公司
  • 做电影网站看电影算网站流量吗上海seo网站优化软件
  • 医疗生物科技 网站建设网络营销的流程和方法
  • app开发导入网站模板网店推广网站
  • 自己做外贸网站能接到单吗网站推广优化排名
  • 静态网站站内搜索长春网站建设定制
  • 自己建设网站平台步骤营销方式和营销策略
  • ibm网站的 色彩风格网店推广
  • 2021年企业所得税税收优惠政策长沙百度快速优化
  • 深圳专业做网站建设百度开放平台
  • 婚纱摄影团购网站模板中国舆情在线
  • 怎么建设网站优化网站服务
  • 做网站建设销售工资福州seo网络推广
  • 网络推广收费价目表站长seo查询
  • 网站做任务赚qb百度股市行情上证指数
  • 怎么做网站里的悬浮窗口专业网店推广
  • 怎么看网站有没有做百度推广微信公众号运营推广方案
  • 营销网站类型教程seo推广排名网站
  • 深圳互联网营销师培训合肥网站seo