草庐IT

Three-EyedRaven

全部标签

Three.js 进阶之旅:页面平滑滚动-王国之泪 💧

声明:本文涉及图文和模型素材仅用于个人学习、研究和欣赏,请勿二次修改、非法传播、转载、出版、商用、及进行其他获利行为。摘要浏览网页时,常被一些基于鼠标滚轮控制的页面动画所惊艳到,比如greensock官网这些showcase案例页面就非常优秀,它们大多数都是使用Tween.js、gasp及greensock提供的一些动画扩展库实现的。使用Three.js也能很容易实现丝滑的滚动效果,本文使用React+Three.js+ReactThreeFiber技术栈,实现一个《塞尔达传说:王国之泪》主题风格基于滚动控制的平滑滚动图片展示页面。通过本文的阅读,你将学习到的知识点包括:了解R3F中useFr

javascript - 在 THREE.js 中检测点击对象

我有一个THREE.js场景,其中出现了很多元素,我需要检测用户点击的是什么对象。到目前为止,我所做的如下。相机不会移动太多——它只会有限地改变垂直位置,始终注视同一点。我的大致方法如下:如果点击相对于Canvas,我取坐标我通过简单的重新缩放将它们转换为webGL场景中的水平和垂直坐标,并添加一个足够远的Z坐标。我从上面的点开始拍摄水平光线,由THREE.Ray()构造我使用ray.intersectObjects()找到沿射线的第一个元素。此方法大致可行,但有时会偏离实际点几个像素。Isthereamorereliabletechniquetofindouttheobjectwhe

javascript - 球体对象的 three.js 外发光?

我正在用three.js构建某种行星系统,我花了几个小时寻找一个合适的解决方案来在一个行星上获得外发光-具有纹理的球体对象。我遇到了这个例子http://stemkoski.github.io/Three.js/Selective-Glow.html哪种方式有效,但问题是-这种形式的发光也会影响主要3D对象,导致颜色变化(如图所示)。可以在这里找到另一个漂亮的发光示例http://bkcore.com/blog/3d/webgl-three-js-animated-selective-glow.html但它再次照亮了整个区域,而不仅仅是“外部”事物。我一直在GitHub上阅读一些关于“

javascript - three.js:按名称或 ID 访问场景对象

我正在从我这样定义的数组中生成对象(不限于这三个):varlinks=[['Linkedin','img/linkedin.png','-300','-230','600'],['Google+','img/google.png','0','-230','600'],['Twitter','img/twitter.png','300','-230','600']];现在它通过每个循环来创建对象并将其添加到场景中,Three.JS如下所示:$.each(links,function(i,item){varthisItemTexture=THREE.ImageUtils.loadTextu

javascript - 使用 Projection 在 Three.js 中将世界坐标转换为屏幕坐标

Three.js中有几个关于取消投影的优秀堆栈问题(1,2),即如何将浏览器中的(x,y)鼠标坐标转换为(x,y,z)坐标在Three.jsCanvas空间中。他们大多遵循这种模式:varelem=renderer.domElement,boundingRect=elem.getBoundingClientRect(),x=(event.clientX-boundingRect.left)*(elem.width/boundingRect.width),y=(event.clientY-boundingRect.top)*(elem.height/boundingRect.height

javascript - three.js - 如何动态更改对象的不透明度?

这是我的对象:varobject=newTHREE.Mesh(geometry,newTHREE.MeshLambertMaterial({map:THREE.ImageUtils.loadTexture("image.png")}));object.position.set(2,3,1.5);现在我已经在init()中创建了这个对象;函数,我可以直接转到对象并改变他的位置,像这样:object.position.x=15;现在的问题是我怎样才能改变纹理的不透明度???谢谢:-) 最佳答案 THREE.MeshLambertMate

javascript - 如何在 THREE.js 中获取网格的宽度/高度/长度

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。更详细地描述您的问题或includeaminimalexample在问题本身。关闭8年前。Improvethisquestion我一直在研究各种有关尝试获取网格宽度和高度的地方,但我已经找到了任何可行的方法。我有一个我导入的collada模型,我想做的就是在Webgl/Three.js单位中获取它的尺寸,以便我可以在我的简单游戏中计算碰撞。那么我将如何在THREE.js中获取网格的宽度和高度?

javascript - Three.JS 线框 Material - 所有多边形与仅边缘

我在一个项目中使用ThreeJS并注意到旧版本渲染线框与新版本不同,我不知道如何恢复(我更喜欢)。此fiddle使用版本54仅渲染使用线框Material绘制的对象的外边缘:http://jsfiddle.net/ksRyQ/或者如图所示,如果这是特定于平台的(我在macchrome上):另一方面,当我使用更新版本的r61在本地运行相同的代码时,我看到了每个多边形的边,如下所示:两种情况下的代码都很简单:material=newTHREE.MeshBasicMaterial({color:0xff0000,wireframe:true});我确定我可以用线条或其他东西来制作立方体,但我

javascript - Three.js 检测 webgl 支持并回退到常规 Canvas

任何使用过three.js的人都可以告诉我是否可以检测到webgl支持,如果不存在,则回退到标准Canvas渲染? 最佳答案 是的,这是可能的。您可以使用CanvasRenderer而不是WebGLRenderer。关于WebGL检测:1)阅读这篇WebGLwiki文章:http://www.khronos.org/webgl/wiki/FAQif(!window.WebGLRenderingContext){//thebrowserdoesn'tevenknowwhatWebGLiswindow.location="http://

javascript - 如何从 Three.js Canvas 中保存图像?

如何保存Thr​​ee.jsCanvas中的图像?我正在尝试使用Canvas2Image,但它不喜欢使用Threejs。因为Canvas只有在它有一个div来附加Canvas对象时才被定义。http://ajaxian.com/archives/canvas2image-save-out-your-canvas-data-to-images 最佳答案 由于toDataURL是Canvashtml元素的一种方法,它也适用于3d上下文。但是您必须注意几件事。确保在初始化3D上下文时将preserveDrawingBuffer标志设置为t