草庐IT

javascript - THREE.js 光线转换对单个> 500k 多边形(面)对象非常慢,线与地球相交

在我的项目中,我有一个玩家在地球上行走。地球不仅仅是一个球体,它还有山脉和山谷,所以我需要改变玩家的z位置。为此,我从玩家的位置向单个物体(地球)转换一条光线,我得到它们相交的点并相应地改变玩家的位置。我只在玩家移动时进行光线转换,而不是在每一帧上。对于一个复杂的对象,它需要永远。具有~1m多边形(面)(1024x512分段球体)的对象需要~200ms。光线转换是否针对每张脸?是否有一种传统的快速方法可以在三中实现这一点,比如一些加速结构(八叉树?bvh?——老实说,从我的谷歌搜索中我似乎没有发现三中包含这样的东西)或其他一些想法-开箱即用(无光线转换)方法?vardir=g_Game

javascript - Three.js 中的自定义形状

在我的项目中,我创建的形状是球体,我使用图像作为Material的纹理...如何制作自定义形状(不是球体、矩形等)?例如,如何创建半球?我现在的代码://createatexturetexture=THREE.ImageUtils.loadTexture('red.png');//createasphereshapegeometry=newTHREE.SphereGeometry(50,16,16);//giveitashaperedcolormaterial=newTHREE.MeshLambertMaterial({map:texture});//createanobjectmes

javascript - 如何水平翻转 Three.js 纹理

我正在制作360度查看器,因此纹理位于圆柱体内。问题是它们水平倒置。我知道texture.flipY但我还没有在thesource上找到texture.flipX.那么如何直接在代码中水平或沿x轴翻转纹理?(不使用图像编辑器) 最佳答案 要水平翻转纹理,您可以执行以下操作:texture.wrapS=THREE.RepeatWrapping;texture.repeat.x=-1;three.jsr.147 关于javascript-如何水平翻转Three.js纹理,我们在StackOv

javascript - 三.js : face4 generates triangle instead of square

我正在尝试使用tree.js自定义几何图形生成一个正方形。但是这段代码varcubeGeo=newTHREE.Geometry();cubeGeo.vertices.push(newTHREE.Vector3(-25,25,-25));cubeGeo.vertices.push(newTHREE.Vector3(25,25,-25));cubeGeo.vertices.push(newTHREE.Vector3(-25,-25,-25));cubeGeo.vertices.push(newTHREE.Vector3(25,-25,-25));cubeGeo.faces.push(new

javascript - 三个 : How could we insert a locally loaded mesh into the canvas being generated by Three to display it?

您好,感谢您阅读这个问题:我正在学习Threejs,目前我有一个奇怪的困难:我已经学会了如何使用加载器以纯HTML/JAVASCRIPT加载格式为NRRD的本地文件:这里是repo:https://github.com/YoneMoreno/LoadNRRDInThreeJSExample作为它的外观示例:但是,我想将前面的示例与React集成。我研究了如何使用这个SO线程关联React和Three:Renderingthree.jselementinReact?现在我的代码是这样的:/*globalTHREE*/importReactfrom'react';classLoadNRRD

javascript - Backbone.js 和 three.js - 带 Canvas 的 MVC

我正处于开发一个小型网络应用程序的规划阶段,该应用程序可以在3D空间中进行一些交互式数据可视化。对于最广泛的浏览器兼容性,three.js看起来是最佳选择,因为我可以使用WebGL、canvas或SVG渲染相同的场景。理想情况下,我想使用backbone.js来提供一个很好的MVC层并避免编写ajax的一些乏味,但在我深入了解它之前,我想知道是否有人有任何经验/技巧/话语尝试使这项工作的建议。假设使用canvas或WebGL,似乎backbone.view可以很容易地抽象出来以支持three.js模型。渲染函数意味着被覆盖。我可以在Canvas上附加一个简单的监听器,然后我们使用一些t

javascript - Three.js 拖动控件固定与相机的距离

我正在使用Three.DragControls在场景周围拖动对象。随着对象被拖动,它与相机的距离似乎越来越远。我的问题类似于这个未回答的问题Dragobjectlockedatcertaindistance/radiusfromcameraview有没有一种聪明的方法可以将_intersection.sub(_offset)固定在场景中心距相机一定距离的位置?我在场景中添加了一个球体dragSphere=newTHREE.Mesh(newTHREE.SphereGeometry(200,60,40),newTHREE.MeshBasicMaterial());dragSphere.na

javascript - Three.js 中一组共面点的最佳拟合矩形

首先,如果某处有解决方案,我深表歉意,但我已经通过Three.js和A-Frame文档以及StackOverflow进行了大量挖掘,但还没有找到我想要的东西寻找。我想做的是从一组我已知共面的Vector3创建一个最适合的A帧平面。如果平面的Angular是90的倍数,这可以很容易地完成,但是其他任何东西和Box3s的.setFromPoints()算法都不能按我需要的方式工作。从Three.js到A-Frame的转换我很可能自己处理,但如果有人想解决这个问题,我们非常欢迎他们。我只需要创建一个真正有意义的矩形平面。基本上,我想创建一个算法来执行此操作:创建粗体平面,而不是浪费太多空间的

javascript - 如何对球体的不规则平面进行纹理处理?

我想为THREE.js球体的每个面赋予它自己的纹理。所以我让SphereGeometry计算顶点并使用面的顶点将每个面转换为PlaneGeometry。THREE.SpherePlaneGeometry=function(v1,v2,v3,v4){THREE.Geometry.call(this);varnormal=newTHREE.Vector3(0,1,0);this.vertices.push(v1.clone());this.vertices.push(v2.clone());this.vertices.push(v3.clone());this.vertices.push(

javascript - Three.js - 如何检查对象是否对相机可见

我很难弄清楚什么是检查Object3d是否对相机的眼睛可见的最佳方法。我在屏幕中间有一个球体。一些立方体随机添加到它的表面上。我需要的是一种方法来检查相机的眼睛可以看到哪些立方体(在球体的前半部分)以及哪些立方体是不可见的(在球体的后半部分)。到目前为止,我所发现的似乎是正确的方向-但我一定遗漏了THREE.Raytracer类的某些内容。这是我正在使用的代码的fiddle:jsfiddle.我已尽力使其尽可能清楚。fiddle的这一部分可能包含错误代码:varraycaster=newTHREE.Raycaster();varorigin=camera.position,direct