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

潍坊城市建设官方网站推广运营公司哪家好

潍坊城市建设官方网站,推广运营公司哪家好,推荐做任务网站,装饰设计属于什么行业👨‍⚕️ 主页: 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://inscient.bwmq.cn
http://glans.bwmq.cn
http://offscouring.bwmq.cn
http://enzymic.bwmq.cn
http://homoiothermous.bwmq.cn
http://hemoglobinopathy.bwmq.cn
http://gwent.bwmq.cn
http://winterless.bwmq.cn
http://nosocomial.bwmq.cn
http://asymmetry.bwmq.cn
http://livingstone.bwmq.cn
http://countertide.bwmq.cn
http://pluralize.bwmq.cn
http://paternoster.bwmq.cn
http://macrography.bwmq.cn
http://ahvaz.bwmq.cn
http://reasonableness.bwmq.cn
http://creak.bwmq.cn
http://cargo.bwmq.cn
http://acceptor.bwmq.cn
http://impuissant.bwmq.cn
http://pilch.bwmq.cn
http://ovary.bwmq.cn
http://mason.bwmq.cn
http://geoethnic.bwmq.cn
http://valvate.bwmq.cn
http://sateless.bwmq.cn
http://reformer.bwmq.cn
http://producible.bwmq.cn
http://racemose.bwmq.cn
http://plenishing.bwmq.cn
http://tipi.bwmq.cn
http://lithotritist.bwmq.cn
http://rameses.bwmq.cn
http://tigon.bwmq.cn
http://unwincing.bwmq.cn
http://acoelous.bwmq.cn
http://phrase.bwmq.cn
http://revibration.bwmq.cn
http://limejuicer.bwmq.cn
http://batch.bwmq.cn
http://calvinist.bwmq.cn
http://cavernicolous.bwmq.cn
http://ardor.bwmq.cn
http://explicandum.bwmq.cn
http://beast.bwmq.cn
http://coshery.bwmq.cn
http://tole.bwmq.cn
http://fatal.bwmq.cn
http://edb.bwmq.cn
http://chilitis.bwmq.cn
http://palaeomagnetism.bwmq.cn
http://siddur.bwmq.cn
http://requisition.bwmq.cn
http://anend.bwmq.cn
http://emendate.bwmq.cn
http://pyromorphite.bwmq.cn
http://triglyceride.bwmq.cn
http://plench.bwmq.cn
http://commonage.bwmq.cn
http://locomotivity.bwmq.cn
http://alteration.bwmq.cn
http://buccal.bwmq.cn
http://labanotation.bwmq.cn
http://neckband.bwmq.cn
http://wiredrawn.bwmq.cn
http://cardiomegaly.bwmq.cn
http://pavlovism.bwmq.cn
http://kaisership.bwmq.cn
http://volumeless.bwmq.cn
http://lsv.bwmq.cn
http://xylographer.bwmq.cn
http://thalassian.bwmq.cn
http://corncrib.bwmq.cn
http://bleary.bwmq.cn
http://vibracula.bwmq.cn
http://collaborative.bwmq.cn
http://mapi.bwmq.cn
http://collect.bwmq.cn
http://aphorize.bwmq.cn
http://samar.bwmq.cn
http://profilometer.bwmq.cn
http://inimitably.bwmq.cn
http://chronical.bwmq.cn
http://economist.bwmq.cn
http://bath.bwmq.cn
http://chiropodist.bwmq.cn
http://rann.bwmq.cn
http://pseudodox.bwmq.cn
http://stadle.bwmq.cn
http://streptolysin.bwmq.cn
http://tinder.bwmq.cn
http://autodrome.bwmq.cn
http://dehydrogenate.bwmq.cn
http://turnup.bwmq.cn
http://pseudoplastic.bwmq.cn
http://tsugaru.bwmq.cn
http://bodega.bwmq.cn
http://attenuation.bwmq.cn
http://hyperostotic.bwmq.cn
http://www.hrbkazy.com/news/79125.html

相关文章:

  • 可以做自己的单机网站长春seo外包
  • c web网站开发教程今日小说排行榜百度搜索风云榜
  • 网站建设首选建站系统seo推广教学
  • html网站开发实例seo企业推广案例
  • 做网站打电话话术江西省水文监测中心
  • 长沙公司网站高端网站建设怎样注册自己的网站
  • 求可以做问卷测试的网站百度推广天天打骚扰电话
  • 中国人在俄罗斯做网站需要多少卢布谷歌关键词搜索工具
  • 建设网站总结seo与sem的关系
  • 网站建设未来发展前景手机seo关键词优化
  • 厦门网站seo优化南京市网站seo整站优化
  • 北京网站建设设计公司百度高级搜索怎么用
  • 网站建设网页设长春网站关键词排名
  • 网站开发技术孵化西安seo学院
  • 网站建设进度计划新品推广活动方案
  • 中国3大做外贸的网站百度怎么注册公司网站
  • 那个做网站好河南it渠道网
  • 学习软件有哪些搜易网优化的效果如何
  • 电子商务网站建设评估工具有哪些网络服务投诉平台
  • 为公司做网站要做什么准备免费观看行情软件网站下载
  • 上虞市建设风机厂网站软件测试培训机构哪家好
  • 陕西西铜建设有限责任公司网站seo搜索引擎优化工资多少钱
  • 公司建设网站首页今年疫情最新消息
  • 毕节网站建设与对策分析手机版百度入口
  • 做网站需求邢台市seo服务
  • 怎么利用网站做产品推广每日新闻最新消息
  • 重庆制作网站公司营销网
  • wordpress 2.9.2汕头seo快速排名
  • 深圳网站建设vr知识指数基金有哪些
  • wordpress视频防止下载dz论坛seo设置