首页
学习
活动
专区
圈层
工具
发布

ThreeJS实现船行效果

://github.com/mrdoob/three.js/blob/dev/examples/js/loaders/MTLLoader.js CSS2DRenderer 2D渲染库: https:/...鼠标移动或者点击到导入的模型, 如何捕获 解决方法: 官方提供了射线捕获的接口 raycaster.intersectObjects, 但是只能识别自建的Mesh模型, 对于导入的模型则无法捕获, 主要是因为导入的模型最外层包了一层...在鼠标事件触发时, 将全局数组提供给raycaster.intersectObjects, 即可识别 1....(mouse, camera) var intersects = raycaster.intersectObjects(objectArr) // console.log('当前点击的Mash'...我们需要用到CSS2DRenderer对其进行渲染, 即创建一个DOM, 将其赋给CSS2DRenderer, 下面代码没有设置坐标, 我是放在鼠标移动事件里设置的 var planeInfo =

5.4K33
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Three.js的入门案例(上)

    关注初识Threejs与小编一起学习成长 在Three.js的赋能下,WEB网页效果逐渐丰富起来,今天我们就来运用之前学习的Three.js基础知识,实现一个旋转的几何体-球体。 ?...是轴道控制器控件,用它可以实现场景与鼠标交互,让场景动起来,控制场景的旋转、缩放、平移;CSS2DRenderer.js是CSS 2D渲染器,使用CSS2DObject和CSS2DRenderer可以绘制一个.../libs/threeJs/controls/OrbitControls.js';//轴道控制器控件 import { CSS2DRenderer, CSS2DObject } from '.....THREE.SphereGeometry(_this.EARTH_RADIUS, 60, 60); var textureLoader = new THREE.TextureLoader();//纹理加载器,用于加载球体的纹理...通常用于HiDPI设备防止模糊输出canvas renderer.setPixelRatio(window.devicePixelRatio); renderer.setSize(canvasWidth

    7K20

    threejs之显示Label-CSS2DRenderer

    CSS2DRenderer:渲染器是生成一个DIV容器,它的作用是能把HTML元素绑定到三维物体上,在DIV容器中各自的DOM元素分别封装到CSS2DObject的实例中,并在scene中增加。...相对于精灵CSS2DRenderer有更好的灵活性,可以更好的通过css控制样式,并且也更方便的进行页面的跳转(通过a元素) 三、CSS2DRenderer方法: (1)getSize():返回包含宽度和长度的对象.../dist/textures/planets/earth_specular_2048.jpg'), //用于创建法线贴图的纹理。...padding: 3px 5px; background: rgba(0, 0, 0, 0.6) } 注意:标签中显示的HTML元素可以在页面中先写好并隐藏起来,运行js...的时候再获取此元素并显示,不能在js中直接用字符串的形式创建元素,否则会报错。

    6.5K51

    Three.js实战—中国地图

    先来看下效果:首先回顾一下three.js的基本要素~Threejs 基本要素场景(Scene):场景是 Three.js 中的一个容器,用于存放所有的 3D 对象(如几何体、灯光、相机等)。...Three.js 提供了多种几何体类型,如立方体(BoxGeometry)、球体(SphereGeometry)、平面(PlaneGeometry)等。...射线追踪但是对于我自己而言还是不满意, 我怎么知道的我点击的是哪一个省份呢,OK这时候就要引入我们three中非常重要的一个类了,Raycaster 。这个类用于进行光线投射。...光线投射用于进行鼠标拾取(在三维空间中计算出鼠标移过了什么物体)我们可以对canvas监听的onmouseMove 事件,然后 我们就可以知道当前移动的鼠标是选择的哪一个mesh。...(mouse.current as Vector2, camera);// 算出射线 与当场景相交的对象有那些const intersects = raycaster.current.intersectObjects

    3.8K10

    从零开始XR开发:Three.js实现交互式3D积木搭建器

    这个项目不仅能帮助你理解Three.js的基础应用,还能深入学习物理引擎集成、拖拽交互系统以及复杂3D场景的构建。...在这个阶段,我们需要初始化Three.js的核心组件,包括场景、相机和渲染器。这三者构成了Three.js应用的基石,缺一不可。场景的搭建过程需要特别注意光照系统的配置。...积木的创建过程包含了几何体构建、材质设置、物理体添加三个主要步骤。几何体定义了积木的形状,材质决定了它的外观,而物理体则赋予了它碰撞和重力特性。...private onMouseDown(event: MouseEvent) : void { this.updateMousePosition(event); this.raycaster.setFromCamera...(this.mouse, this.camera); const intersects = this.raycaster.intersectObjects(this.draggableObjects

    44521

    翻译 | 使用A-Frame打造WebVR版《我的世界》

    只用使用一行 HTML(,包括:canvas、场景、渲染器、渲染循环、摄像机以及 raycaster。然后,我们可以通过使用添加子元素的方式来为场景添加对象。...我们将搭建一个基本的 VR 立体像素制作器(voxel builder),它主要用于支持位置追踪(positional tracking)和追踪控制器(tracked controllers)的空间追踪...我们所使用的图片是一张适用于半球体的图片,所以首先我们需要将刚刚的球体使用 theta-length="90" 水平截成半球体,另外我们将球的半径设置为 30 米以匹配地面。...A-Frame 框架中的所有代码都是对 HTML 的扩展,而且这些扩展可以用于其他对象和其他场景。...VR 中用于类似光标点击的场景方法是使用 raycaster,它射出一道激光并返回激光命中的物体。然后我们通过监听交互事件及查看 raycaster 来获得命中点信息。

    3.6K90

    看完这篇,你也可以实现一个360度全景插件

    OpenGL是用于渲染 2D、3D量图形的跨语言、跨平台的应用程序编程接口 (API)。 这个接口由近 350个不同的函数调用组成,用来从简单的图形比特绘制复杂的三维景象。...除了这两种光, Three.js还提供了其他几种光源,它们适用于不同情况下对不同材质的渲染,可以根据实际情况选择。...最常用的,我们使用距离原点的三个长度(距离 x轴、距离 y轴、距离 z轴)来定义一个位置,这就是直角坐标系。 在判定坐标系时,我们通常使用大拇指、食指和中指,并互为 90度。...现在,标记已经添加到全景上面了,我们来为它添加一个点击事件: Three.js并没有单独提供为 Sprite添加事件的方法,我们可以借助光线投射器( Raycaster)来实现。...Raycaster提供了鼠标拾取的能力: 通过 setFromCamera函数来建立当前点击的坐标(经过归一化处理)和相机的绑定关系。

    9.8K30

    一步步教你用 WebVR 实现虚拟现实游戏

    虽然代码可以应用于任何平台,但下面依赖项的安装说明适用于Mac。 互联网接入,特别是glitch.com; VR 眼镜(可选,推荐)。我用的是Google Cardboard,每个售价15美元。...与实体相关的概念有三个: 几何和材质, 转换轴, 相对转换。 首先,几何和材质是代码中所有三维对象的两个构建块。几何定义了一系列的“形状” —— 立方体,球体,金字塔等。...-- end code here --> 其次,有三个轴可以转换对象。 x 轴是水平运动的,当我们向右移动时,x 值会增加。 y 轴垂直运行,y 值随着我们向上移动而增加。...我们可以沿这三个轴平移,旋转或缩放实体。 例如,要将对象向“右”移动,我们需要增加其x值。要向上旋转对象,我们需要沿 y 轴旋转它。...然后,定义一个工具函数,用于检查客户端是否是移动设备。

    2.2K30

    UGUI系列-原理分析(Unity3D)

    4.Physics Raycaster 与 Physics 2D Raycaster 使用环境 与 版本 Window 7 Unity 5.2.4 Event System 在建立出UI时,Unity...,Raycaster 会观察 Canvas下所有图形,并检测是否被击中,射线检测其实就是指定位置与方向后,投射一条隐形线并判断是否有碰撞体在线上,射线检测这点官方已经有详细说明,这裡用于判断是否点选到UI...组件位置:Unity Menu Item → Component → Event → Physics 2D Raycaster 跟 Physics Raycaster 只差在于,Physics 2D...(new Color(Random.value , Random.value , Random.value)); } 到这裡,这个范例的程式撰写部分暂告一段落,回到 Unity 画面,为每个球体加入这三个...在这裡可能会有疑问,为什麽要分成三个 Script,而不写在同一个 Script 中呢?

    4.8K40

    做网站-推荐3种CSS,JS合并的方式

    下面介绍以合并js文件为例 保留疑问 : JS 合并与 JS 压缩的区别 ? 分别对页面有什么影响?...复制代码 代码如下: copy G.js+T.js GT_bin.js /b 说明 : (1)输入要合并的js文件,保存debug.bat文件,运行debug.bat即可. (2)就这么一行代码就搞定了...三个方式如下: 1、一个大文件,所有js合并成一个大文件,所有页面都引用它。 2、各个页面大文件,各自页面合并生成自己所需js的大文件。...不适用场景: #这种方式肯定不适用于大型的Web应用,且不论单文件代码量,业务的复杂性也不允许我们这样干(我没见过那个网站这样做的)。...2、各个页面大文件 各个页面合并生成自己所需js的大文件,生成多份js合并。 优点: #每个页面都用到最精确的js,不会有不相关代码。

    3.7K110

    一网打尽“小黄图”!手把手教你造一只AI鉴黄神器(内附代码及数据集)

    GitHub 上开源了一款鉴定不雅内容的js库NSFW JS,你可以根据他的教程,搭建属于你自己的鉴黄客户端,甚至都不需要让文件离开用户的电脑。...NSFW:不适合在工作场合出现的内容(英语:Not Safe/Suitable For Work,缩写:NSFW)是一个网络用语,多指裸露、暴力、色情或冒犯等不适宜公众场合的内容。...在给出含有上述内容的超链接旁标注 NSFW,用于警告观看者。 ?...变态(Hentai):色情艺术,不适合大多数工作环境下观看。中立(Neutral):一般,无害的内容。色情(Porn):不雅的内容和行为,通常涉及生殖器。性感(Sexy):不合时宜的挑衅内容。...根据网站给出的博客文章,只有三个步骤:1.获取代码;2.在客户端加载模型;3.对图像进行分类。 博客主要展示的是node风格的用法,首先引入NSFW JS,当然,需要事先获取ensorflowJS。

    8.3K30
    领券