首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

与 2D web 相比,我们不再拘泥于使用一小撮固定的 HTML 元素并将它们嵌套在很深的层次结构中。...与使用 为场景添加一个对象不同,我们使用 来创建可复用的体素,使用它们就像使用预设实体一样。...幸运的是,A-Frame 拥有许多处理交互的组件。VR 中用于类似光标点击的场景方法是使用 raycaster,它射出一道激光并返回激光命中的物体。...然后我们通过监听交互事件及查看 raycaster 来获得命中点信息。...A-Frame 提供基于注视点的光标(注:就像 FPS 游戏的准心那样),可以利用此光标点击正在注视的物体,但也有可用的控制器光标组件来根据 VR 追踪控制器的位置发射激光,就像刚刚使用 teleport-controls

2.9K90

3D场景中物体模型选中和碰撞检测的实现

在这一阶段,认为体素被接触并封闭于一个包围图元中是有帮助的:一个简单的几何对象(通常是一个长方体)用来与光线和体相交。 采样(Sampling):沿着光线的射线部分位于体的内部,等距离的点采样被选择。...raycaster raycaster.setFromCamera( mouse, camera ); // 获取raycaster直线和所有模型相交的数组集合...方法名 .intersectObject ( object, recursive : Boolean, optionalTarget : Array ) 参数 object - 检测与射线相交的物体 recursive...用Raycaster来检测碰撞的原理很简单,我们需要以物体的中心为起点,向各个顶点(vertices)发出射线,然后检查射线是否与其它的物体相交。...如果出现了相交的情况,检查最近的一个交点与射线起点间的距离,如果这个距离比射线起点至物体顶点间的距离要小,则说明发生了碰撞。

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

    UE 实现鼠标点选模型

    判断射线和那些对象进行相交(可以使用内置的方法获取),取最近相交的模型,就是鼠标点击获取的三维对象。 如果熟悉threejs,就知道这有点类似Threejs的raycaster。...重载Pawn 我们的蓝图在一个重载的Pawn类里面实现,Pawn 是可那些由玩家或 AI 控制的所有 Actor 的基类。Pawn 是玩家或 AI 实体在游戏场景中的具化体现。...这说明, Pawn 不仅决定了玩家或 AI 实体的外观效果,还决定了它们如何与场景进行碰撞以及其他物理交互。...mesh可以被射线检测到的话 获取到相关的信息后就可以执行相关操作,此处打印出相关的信息如下: 图片 显示鼠标光标 默认运行程序后, 鼠标的光标是不显示的,为了能够看清点击点,需要显示鼠标光标,比如按下...tap键显示光标,如下: 图片 设置Pawn 重写了Pawn类之后,在程序的设置中,需要把模型的Pawn改成我们重写的Pawn类,才能生效,如下图所示: 图片 结语 本文说明了通过射线的方法检测鼠标点击模型的功能

    2.3K31

    threejs 学习之射线的使用

    主要内容: 使用 threejs 创建 20x20 的网格,鼠标移动时,方块跟随移动,点击时在网格任意位置放置方块,按 shift 时,删除当前位置方块。...流程如下: 创建网格 创建一个与网格同样尺寸的平面 创建一个方块 mesh_1 与网格同样的尺寸 一个与网格同样的方块 geometry_2 , 不加入 scene 中 三个事件: 鼠标移动事件,随着鼠标移动...,更改 mesh_1 位置,并重新渲染 鼠标点击事件,在交点位置,创建新 mesh, 若是相交对象不为 平面,则删除当前对象 keydown, keyup, 更改是否删除的状态 详细代码如下: import...raycaster.setFromCamera(mouse, camera); var intersects = raycaster.intersectObjects(objects)...raycaster.setFromCamera(mouse, camera); var intersects = raycaster.intersectObjects(objects)

    1.8K41

    图形编辑器开发:以光标为中心缩放画布

    通过它,我们可以像举着一台摄影机,在图形所在的世界到处游逛,透过镜头,可以只看自己想看的图形;可以拉近摄影机,看到图形的细节;也可以拉远摄影机,总览多个图形之间的关系。...然后再做一个缩放,就像摄影机拉近或远离与目标物体距离,效果是物体在镜头下变大或变小。 转换就两步,移动然后缩放。 视图矩阵转换 场景坐标系到视图坐标系的转换,我们通过 视图矩阵 相乘来实现。...: 以光标为中心缩放 首先我们来认清本质,所谓以光标为中心缩放,不变的是什么?...光标所在点在视图坐标系距离视口左上角的相对位置,保持不变。...实现思路是: 记录好缩放前,光标所在位置的场景坐标; 计算 (cx, cy) 在旧缩放比(zoom)的场景坐标。

    23710

    Three.js实现脸书元宇宙3D动态Logo

    元宇宙的内涵是吸纳了信息革命 5G/6G、互联网革命 web3.0、人工智能革命,以及 VR、AR、MR,特别是游戏引擎在内的虚拟现实技术革命的成果,向人类展现出构建与传统物理世界平行的全息数字世界的可能性...//声明raycaster和mouse变量 var raycaster = new THREE.Raycaster(); var mouse = new THREE.Vector2(); function...onMouseClick(event) { // 通过鼠标点击的位置计算出raycaster所需要的点的位置,以屏幕中心为原点,值的范围为-1到1....raycaster raycaster.setFromCamera(mouse, camera); // 获取raycaster直线和所有模型相交的数组集合 let intersects =...加载人物模型 人物模型的加载流程和 Logo 模型加载流程是一样的。我添加了一个正在施展龟派气功的人物,没想到与 Logo 模型的旋转动画非常契合 。

    2.6K21

    从UI到AI——移动端H5生成技术漫谈

    阅读字数:2061 | 6分钟阅读 摘要 Houdini 为 CSS 提供动态编程能力,让开发者介入布局与渲染的过程,带来无限扩展性。...在大多数的单机游戏中的暂停功能,其实也是通过暂停游戏内的时钟来实现的。 Canvas 2D的流畅度依赖于每秒刷新次数,当设备性能较好时,动画流畅度会得到保障。...第一种是rayCaster,它的做法是向场景中发射一条射线,然后返回与射线相交的所有元素的集合,默认第一个相交的元素就是被点击的元素。这种方式简单快速,但是精准度不算好。...这种方案的速度和精准度都有保障,不过内存消耗偏大。 最后的CssRenderer是DOM和真正的3D场景混合使用的方案,它有着完善的事件触发和响应机制,唯一的缺点就是卡顿。...对于前两点可以通过类ppt的编辑器解决,通过引入坐标系的概念同样也可以解决手机分辨率的问题。至于事件的触发,可以为每个组件配置相应的事件响应机制,通过可视化列表的形式展现出来。

    1.9K50

    Three.js实战—中国地图

    然后我们在这里可以设置拉伸的深度, 然后接下来就是设置材质了。lineGeometry 其实 对应的是轮廓的边线。...射线追踪但是对于我自己而言还是不满意, 我怎么知道的我点击的是哪一个省份呢,OK这时候就要引入我们three中非常重要的一个类了,Raycaster 。这个类用于进行光线投射。...我怎么知道我到底找到没,我们对找到的mesh将它的表面变成灰色,但是这样会导致一个问题,我们鼠标再一次移动的时候要把上一次的材质给他恢复过来。...; if (tooltipRef.current) { tooltipRef.current.style.visibility = "hidden"; }} // 通过摄像机和鼠标位置更新射线raycaster.current.setFromCamera...(mouse.current as Vector2, camera);// 算出射线 与当场景相交的对象有那些const intersects = raycaster.current.intersectObjects

    1.3K10

    设计全新动作捕捉,构建水下3D系统,《阿凡达2》的特效背后藏了哪些秘密?

    这部被影迷和影视从业者视为“救市之作”的电影,单日上座率最高才8%,甚至与首周单日上座率达到15%以上的《侏罗纪世界3》还有一定的差距。...除此之外,卡梅隆值得吹嘘的技术部分没有让大家失望,画面与特效仍然相当震撼,尤其是考虑到本次的“水下3D拍摄”,难度飙升了数倍。...一般来说,特效电影中的动作捕捉需要演员穿着带有标记点的特殊服装,这类服装可以将红外线反射回固定的摄影机,这是为了方便动画师后期创建角色的数据点。...首先,每个演员的头盔上都安装了一个小摄影机,用来捕捉演员的面部表演;其次,虚拟摄影机可以实时渲染出演员最终的CG角色和周边环境,这被称为摇摆摄影机,因为它可以对着任何方向拍摄。...对于立体拍摄来说,还有重要的一点是,它有一个0~75mm的可调节立体底座 (IA),带有一个专利的湿式(潜水式)分束器,可防止失真和分辨率损失。 卡梅隆表示,这是他见过最好的水下拍摄系统了。

    86350

    基于相交线的立体平面SLAM

    本文提出了一种从立体图像中提取相交线计算平面参数的新方法。平面特征普遍存在于人造物体和构筑物的表面,具有规则的形状和直线的线条。在三维空间中,两条相交的直线可以确定这样一个平面。...计算平面特征的示例如图1所示。与直接使用线特征相比,平面特征避免了复杂的参数化,实现了简单而稳健的数据关联。此外,平面也是更精确的地标,计算平面特征的过程也起到了滤除不精确线段的作用。...因此,Tcw*pi_w将三维点从世界变换到摄影机坐标系,而Tcw^-T*pw将平面从世界变换到摄影机坐标系,对于直线,我们只记录它们的端点(ps;pe)和单位方向向量nl,这足以计算平面特征。...面与面之间的距离为 ? 如果D小于阈值(在实验中为5cm),这两条线满足第三个条件,并且计算了平面系数pi,这里是d_k的算术平均值。有时计算的平面可能不是场景中的真实平面,例如门框线的平面。...我们给出了两个公共数据集的实验结果,证明了系统的准确性和鲁棒性。 从实验结果来看,我们的系统明显优于目前最先进的基于特征点的SLAM系统。与基于线的SLAM系统相比,我们的系统也得到了可比的结果。

    1.1K31

    Unity-Optimizing Unity UI(UGUI优化)03 Fill-rate,Canvas and Input

    禁用不可见的摄像机输出结果 如果一个全屏UI带有不透明的背景,世界空间的摄像机仍然会渲染标准的3D场景在UI前面,渲染器不知道在渲染全屏UI之前会渲染整个3D场景。...这里的改变包括UI 对象的表现,精灵图片的渲染,transform的位置和大小,文本网格的文本。 子物体顺序 Unity UI的构建是从后向前的,与对象在hierarchy中的顺序是一样。...这个问题通常发生在文本和精灵图片彼此靠的比较的近的时候,本文的边界框与精灵图片的边界框重叠了,由于文本的多边形是透明的,可以通过以下两个方法来解决: 重新进行排序让不可合并的材质移动到两个可合并材质的上方或者下方...Raycast 优化 Graphic Raycaster实现相对简单,直接通过遍历全部Graphic 组件,将'Raycast Target'设置为true,遍历全部Raycast Target,Raycaster...此操作的成本与层次结构的深度成比例地线性增长。 必须测试附加到层次结构中每个Transform的所有组件,看它们是否实现了ICanvasRaycastFilter,因此这不是一个廉价的操作。

    2.5K30

    2018 NAB Show Shanghai酷炫科技早知道

    多个摄影机捕捉真实演员的表演动作,并生成三维骨骼数据,将这些动作还原至相应的虚拟模型,即可驱动模型运动,这就是动作捕捉系统普遍的工作流程。...Synertial手指捕捉系统可与大型光学动作捕捉同时使用,是解决大规模多人动作捕捉出现相互遮挡问题时的最佳方案。...(2)支持将虚拟角色的表演实时传输给演播系统,在演播系统内实现实拍角色与虚拟角色的同台表演。 (3)软件界面人性化,数据处理能力强,批处理功能十分方便。...(4)可以捕捉任何类型的骨骼―在两足和四足动物骨骼上没有限制。 (5)稳定牢固的实时解算功能,无论反光标记点被遮挡或丢失,软件都能够通过自身的解算能力使得角色骨骼保持稳定的实时表演状态。...(8)支持实时场地校准,当动捕摄影机在使用过程中被意外撞击导致震动甚至挪动位置,能够借助正在场地内表演的演员,对覆盖场地的动捕摄影机的位置进行即刻校准,不用重新全场校准。 ?

    74950

    猫脸辨识没这么容易!GPU加持深度学习才突破瓶颈

    至于猫咪会不会乖巧的使用喂食器,让摄影机拍摄脸部影像,或是同时有两只猫挤进喂食器的情况又该怎么办,宋牧奇说:「CATFi在装置硬件上做了很多猫体工学的努力」,以尽量避免意料之外的事情发生。...,为了优化学习效果,须将资料处理单位拆解到像素等级,算法会从每个画素出发,计算画素与画素之间的线段关系,线段与线段的连接形成边的关系,而边与边相连则会形成轮廓关系等,每一阶段的处理都是一种特征萃取,计算机进而找出具有哪些特征的图片是代表猫...3、喂食器的部分,一边是放水,一边是饲料,藉由重量的变化,可以得知每天所吃的份量 ? 4、猫吃的地方有摄影机,除了刚谈到的辨识技术外,另一方面也可以让你在远端看到他。...但在GPU以及分散式系统执行机器学习都会遭遇相同的问题,由于机器学习在取得最终结果之前,中间过程需要经过多次迭代,而这两种平行运算的系统在设计上,便需要建立互相沟通的机制,让机器互相交流信息,宋牧奇说,...GPU与深度学习的结合,使得技术可用程度得以大幅提高。

    932140

    UGUI系列-原理分析(Unity3D)

    如果Scene中的物件(GameObject)比UI平面更靠近摄影机,就会遮挡到UI平面。...1.Render Camera:用于渲染的摄影机 2.Plane Distance:与Camera的距离 3.Sorting Layer:Canvas属于的排序层,在 Edit->Project...目标 1.Event System 事件系统 2.Input Module 输入控制 3.Graphic Raycaster 4.Physics Raycaster 与 Physics 2D Raycaster...的方式可以使用编辑器设定,设定触发时的 “通知方法” 与 “修改属性”,且更为弹性 Physics 2D Raycaster 组件位置:Unity Menu Item → Component → Event...上必须有 Collider2D Component,这边不再赘述 后记 我们透过输入的方式不同与 Raycaster 的关系,理解了整个 Event System 触发流程,而且也知道怎麽实作 Event

    3.8K30

    达芬奇DaVinci Resolve Studio 18 v18.1.3build8激活版

    新色彩空间的工具能在调色时提供更为一致的响应,从而显著提升画质。图像处理是在新的大型内部色彩空间中完成的,它比Rec. 2020、ARRI广色域和ACES AP1更大。...FAIrlight Audio Core是新一代低延迟多核、多线程音频引擎,它可以智能管理工作量,为您提供多达2000条轨道,并带有实时EQ、动态控制和插件,全部都能在一个系统中实现!...在快编页面上,如今剪辑师可获得带有媒体夹分隔线的新型元数据“场记板”视图,便于根据场景、镜头、摄影机或其他元数据轻松分类和查找片段!...每个片段在媒体池中可显示为一个卡片,带有缩略图标和根据片段分类方式的自定义元数据。当使用源磁带模式时这一功能非常强大,因为场记板视图可轻松快速地跳至特定场景或同一摄影机的镜头群组上。...新动画曲线修改器可让您在剪辑或快编页面以动画的自动变速功能更改Fusion特效、转场和模板时长!搭载波形显示的新音频播放工具,可让您精准设定动画时间、与剪辑页面共享标记、并为动态图形新设矢量形状工具。

    1.2K20

    基于TensorFlow的实时目标检测,低功耗无延迟

    从实验可以看到,检测人脸大约需要1秒钟的时间,这其实和摄像机的角度有关,并且还伴有一些网络延迟。但是实验效果还是很好的。...利用树莓派,Tensorflow和摄像头,我们完成了可疑人员的捕捉可警告的工作。 技术解析:由树莓派驱动的摄像头如何发出警报 这款摄影机使用带有相机模块的树莓派4来检测视频。...这个库使测试者可以在开箱即用的情况下使用对象检测,而无需手动训练和调整模型,或者进行云部署。通过OpenCV可与摄影机对话。 比如你遇到了一个问题:旧RasPi运行的是Raspbian的32位版本。...此外,尽管新的树莓派是一台功能强大的小型计算机,但它可以与现代计算机相称,尤其是在树莓派3或更早的版本。...这是一个称为边缘计算的概念。 我们实际上是通过在物理上靠近边缘节点的机器上进行繁重的操作,来使用低功率的小型机器来实现低延迟通信。 在这种情况下,运行Tensorflow对象检测。

    88420

    让项目效果更酷!ThingJS地图新功能——3D线条渲染

    线条定义为由画笔绘出来的标记,或两个对象或元素相交处创建的线条。它定义了绘画的主题,并帮助我们暗示事物的运动。 什么是"线"?...它是如此真实的陈述和一点智慧,激发了几代人对艺术的追求。然而,我们必须变得更正式一点。线条是几乎每一件艺术作品所依赖的最基本的设计工具。线条有长度、宽度、音调和纹理。...1.jpg GeoLine是带有地理位置(coordinates)的线要素,也可以添加属性字段(userdata)以存储其他信息。...像素线(Line) 线宽始终为1px 绘制效率高 管状线(Pipeline) 可调线宽(单位:m) 矢量样式不可设置流速 片状线(Plane) 可调线宽(单位:px) 面向摄影机 下面分别讲一下不同的线要素类型...线条动效不仅实现引导功能,还能够与用户交互,ThingJS让你的3D项目开口说话!

    1.9K00
    领券