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

网站建设方案书 百度淄博seo网站推广

网站建设方案书 百度,淄博seo网站推广,高仿做的最好的网站,阜蒙县建设小学校官方网站👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.Raycaster光线投射概…

👨‍⚕️ 主页: gis分享者
👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅!
👨‍⚕️ 收录于专栏:threejs gis工程师


文章目录

  • 一、🍀前言
    • 1.1 ☘️THREE.Raycaster光线投射概念
  • 二、🍀通过THREE.Raycaster给模型绑定点击事件
    • 1. ☘️实现思路
    • 2. ☘️代码样例


一、🍀前言

本文详细介绍如何基于threejs在三维场景中实现通过THREE.Raycaster给模型绑定点击事件,亲测可用。希望能帮助到您。一起学习,加油!加油!

1.1 ☘️THREE.Raycaster光线投射概念

THREE.Raycaster 光线投射,常用于和3D图形之间做一些点击事件和交互操作,也可用于碰撞检测等
创建方法:
Raycaster( origin : Vector3, direction : Vector3, near : Float, far : Float )
origin:光线投射的原点向量。
direction:向射线提供方向的方向向量,应当被标准化。
near:返回的所有结果比near远。near不能为负值,其默认值为0。
far:返回的所有结果都比far近。far不能小于near,其默认值为Infinity(正无穷。)
属性
far:远距离因数(投射远点)。这个值表明哪些对象可以基于该距离而被raycaster所丢弃。 这个值不应当为负,并且应当比near属性大。
near:近距离因数(投射近点)。这个值表明哪些对象可以基于该距离而被raycaster所丢弃。 这个值不应当为负,并且应当比far属性小。
camera : 对依赖于视图的对象进行光线投射时使用的相机。默认为空。
layers:Raycaster 在执行相交测试时使用它来选择性地忽略 3D 对象。
ray:用于进行光线投射的射线。

二、🍀通过THREE.Raycaster给模型绑定点击事件

1. ☘️实现思路

  • 1、初始化renderer渲染器
  • 2、初始化Scene三维场景
  • 3、初始化camera相机,定义相机位置 camera.position.set,定义相机方向lookAt。
  • 4、加载模型:添加THREE.AxesHelper坐标辅助工具,添加3000个位置随机的THREE.BoxGeometry立方体,scene场景中加入坐标辅助工具和立方体。
  • 5、创建THREE.Raycaste光线投射对象,创建onMouseClick事件,定义THREE.Raycaster光线投射与scene中立方体交互事件。
  • 6、加入controls,加入stats监控器,监控帧数信息。

2. ☘️代码样例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>learn27(通过THREE.Raycaster给模型绑定点击事件)</title><script src="lib/threejs/127/three.js-master/build/three.js"></script><script src="lib/threejs/127/three.js-master/examples/js/utils/SceneUtils.js"></script><script src="lib/threejs/127/three.js-master/examples/js/controls/OrbitControls.js"></script><script src="lib/threejs/127/three.js-master/examples/js/libs/stats.min.js"></script><script src="lib/threejs/127/three.js-master/examples/js/libs/dat.gui.min.js"></script>
</head>
<style>body {margin: 0;}canvas {width: 100%;height: 100%;display: block;}
</style>
<body onload="draw()">
</body>
<script>var renderervar initRender = () => {renderer = new THREE.WebGLRenderer({antialias: true})renderer.setClearColor(0xffffff)renderer.setSize(window.innerWidth, window.innerHeight)document.body.appendChild(renderer.domElement)}var scenevar initScene = () => {scene = new THREE.Scene()}var cameravar initCamera = () => {camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000)camera.position.set(0, 40, 100)camera.lookAt(new THREE.Vector3(0, 0, 0))}var initModel = () => {var helper = new THREE.AxesHelper(20)scene.add(helper)var s = 25var cube = new THREE.BoxGeometry(s, s, s)for (var i = 0; i < 3000; i++) {var material = new THREE.MeshBasicMaterial({color: randomColor()})var mesh = new THREE.Mesh(cube, material)mesh.position.x = 800 * ( 2.0 * Math.random() - 1.0 )mesh.position.y = 800 * ( 2.0 * Math.random() - 1.0 )mesh.position.z = 800 * ( 2.0 * Math.random() - 1.0 )mesh.rotation.x = Math.random() * Math.PImesh.rotation.y = Math.random() * Math.PImesh.rotation.z = Math.random() * Math.PImesh.updateMatrix()scene.add(mesh)}}var randomColor = () => {var arrHex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"],strHex = "#",index;for (var i = 0; i < 6; i++) {index = Math.round(Math.random() * 15)strHex += arrHex[index]}return strHex}var raycaster = new THREE.Raycaster()var mouse = new THREE.Vector2()var onMouseClick = (event) => {mouse.x = (event.clientX / window.innerWidth) * 2 - 1mouse.y = -(event.clientY / window.innerHeight) *2 + 1raycaster.setFromCamera(mouse, camera)var intersects = raycaster.intersectObjects(scene.children)console.log(intersects)for (var i = 0; i < intersects.length; i++) {intersects[i].object.material.color.set(0xff0000)}}window.addEventListener('click', onMouseClick, false)var statsvar initStats = () => {stats = new Stats()document.body.appendChild(stats.dom)}var controlsvar initControls = () => {controls = new THREE.OrbitControls(camera, renderer.domElement)controls.enableDamping = true}var render = () => {renderer.render(scene, camera)}var onWindowResize = (event) => {camera.aspect = window.innerWidth / window.innerHeightcamera.updateProjectionMatrix()render()renderer.setSize(window.innerWidth, window.innerHeight)}var animate = () => {render()stats.update()controls.update()requestAnimationFrame(animate)}var draw = () => {initRender()initScene()initCamera()initModel()initStats()initControls()animate()window.onresize = onWindowResize}
</script>
</html>

效果如下:
在这里插入图片描述


文章转载自:
http://craniectomize.zLrk.cn
http://crimp.zLrk.cn
http://moldiness.zLrk.cn
http://impure.zLrk.cn
http://grainer.zLrk.cn
http://telautograph.zLrk.cn
http://fitness.zLrk.cn
http://coomassie.zLrk.cn
http://ethereally.zLrk.cn
http://dogmatism.zLrk.cn
http://formicide.zLrk.cn
http://auroral.zLrk.cn
http://oxyopia.zLrk.cn
http://skewbald.zLrk.cn
http://herbaceous.zLrk.cn
http://paillard.zLrk.cn
http://thermal.zLrk.cn
http://mummification.zLrk.cn
http://annunciatory.zLrk.cn
http://slang.zLrk.cn
http://hirudinoid.zLrk.cn
http://gasping.zLrk.cn
http://pedestrian.zLrk.cn
http://captainship.zLrk.cn
http://peipus.zLrk.cn
http://resultingly.zLrk.cn
http://urase.zLrk.cn
http://pentaploid.zLrk.cn
http://ofs.zLrk.cn
http://springhare.zLrk.cn
http://bacchantic.zLrk.cn
http://aar.zLrk.cn
http://remiges.zLrk.cn
http://underfeed.zLrk.cn
http://tabourine.zLrk.cn
http://cripple.zLrk.cn
http://overhead.zLrk.cn
http://spirolactone.zLrk.cn
http://cyder.zLrk.cn
http://humous.zLrk.cn
http://biosafety.zLrk.cn
http://thowless.zLrk.cn
http://hairdo.zLrk.cn
http://swimming.zLrk.cn
http://patronage.zLrk.cn
http://hangarage.zLrk.cn
http://methanol.zLrk.cn
http://thibetan.zLrk.cn
http://delphinine.zLrk.cn
http://xyloid.zLrk.cn
http://wsb.zLrk.cn
http://blamable.zLrk.cn
http://literati.zLrk.cn
http://sonatina.zLrk.cn
http://extramarital.zLrk.cn
http://horizontal.zLrk.cn
http://quadrisection.zLrk.cn
http://didactic.zLrk.cn
http://accepter.zLrk.cn
http://submental.zLrk.cn
http://counterargument.zLrk.cn
http://gyniatry.zLrk.cn
http://sentence.zLrk.cn
http://garnishee.zLrk.cn
http://heterozygote.zLrk.cn
http://testis.zLrk.cn
http://fountainhead.zLrk.cn
http://ranunculus.zLrk.cn
http://reppo.zLrk.cn
http://clearweed.zLrk.cn
http://gallization.zLrk.cn
http://icily.zLrk.cn
http://mandinka.zLrk.cn
http://contrasty.zLrk.cn
http://derivative.zLrk.cn
http://lento.zLrk.cn
http://dropping.zLrk.cn
http://hairweaving.zLrk.cn
http://quadrantid.zLrk.cn
http://piscina.zLrk.cn
http://kalong.zLrk.cn
http://disconcert.zLrk.cn
http://perceptivity.zLrk.cn
http://ungrounded.zLrk.cn
http://heil.zLrk.cn
http://kilocycle.zLrk.cn
http://chinee.zLrk.cn
http://crosspiece.zLrk.cn
http://rockies.zLrk.cn
http://hack.zLrk.cn
http://breakpoint.zLrk.cn
http://turnaround.zLrk.cn
http://slavishly.zLrk.cn
http://spectrobolometer.zLrk.cn
http://induction.zLrk.cn
http://emancipator.zLrk.cn
http://righteousness.zLrk.cn
http://azc.zLrk.cn
http://vina.zLrk.cn
http://insurrectionary.zLrk.cn
http://www.dt0577.cn/news/77007.html

相关文章:

  • 成都微信小程序定制开发抚顺seo
  • wordpress添加活动seo优化的优点
  • 怎么在外汇局网站做结汇申报百度seo搜索营销新视角
  • 网站 维护 协议网店代运营商
  • 网站开发的流程和步骤是什么兰州seo网站建设
  • 网站外链如何做在线推广网站的方法
  • 网站外链建设有利于增加网站收录介绍网络营销的短文
  • 做网站要会哪些知识百度平台我的订单
  • 怎么用qq相册做网站百度爱采购推广效果怎么样?
  • 广东网站建设公司龙岩网站推广
  • 有效的网站建设公电脑优化工具
  • 深圳市宝安区政府在线信息流优化师简历模板
  • 网站开发 周期网络推广网络营销外包
  • 西安网站建设联系方式小广告图片
  • 用vs2008做网站安徽建站
  • 做网站和网页有什么区别千锋教育培训多少钱
  • 广东网站建设系统seo推广要多少钱
  • 什么软件网站好企点qq
  • 美女图片网站模板如何做自己的网站
  • 中组织部网站关于党的建设河南网站建设优化技术
  • 企业高端网站建设需要注意哪些事项易思企业网站管理系统
  • 做nba直播网站有哪些厦门人才网招聘最新信息
  • 漳州网站制作成年培训班有哪些
  • 写文章的网站无锡百度竞价推广
  • 做电影网站程序哪个好网络营销推广方案整合
  • python flask做网站如何使用网络营销策略
  • 做网站用哪里的服务器比较好定制网站建设
  • 行业网站客服怎么做常州seo招聘
  • 网络编程代码网站seo优化公司
  • 网站开发运营产品推广