草庐IT

three-tier

全部标签

javascript - 将 Three.js 场景导出到 STL,保持动画完好无损

我渲染了一个Three.js场景,我想导出它在动画渲染后的样子。例如,在动画播放了大约100帧后,用户点击导出,场景应该按照当时的样子导出到STL。根据我的尝试(即使用STLExporter.js),它似乎仅使用初始位置导出模型。如果已经有办法做到这一点,或者有一个简单的解决方法,我将不胜感激。更新:在深入了解内部结构后,我已经弄清楚(至少表面上)为什么STLExporter不起作用。STLExporter找到所有对象并向它们询问Geometry对象的顶点和面。我的模型有一堆剥皮的骨头。在动画步骤中,骨骼得到更新,但这些更新不会传播到原始Geometry对象。我知道这些变换后的顶点正在

javascript - Three.js:将 3d 位置转换为 2d 屏幕位置

我有一个位置为(x,y,z)的3D对象。如何计算该对象的屏幕位置(x,y)?我已经搜索过它,一个解决方案是我必须找出投影矩阵,然后将3D位置点乘以该矩阵以将其投影到某些2D观看表面(计算机屏幕)上。但是我不知道如何在Three.js中找到这个矩阵。我尝试了这样的转换函数,但它给出了错误的结果functionPoint3DToScreen2D(point3D){varscreenX=0;varscreenY=0;varinputX=point3D.x-camera.position.x;varinputY=point3D.y-camera.position.y;varinputZ=poi

javascript - Three.js tween camera.lookat

我尝试使用Tween.js在Three.js中对camera.lookAt进行补间,但收效甚微。这行得通selectedHotspot=object;vartween=newTWEEN.Tween(camera.lookAt(object.position),600).start();而是将相机直接旋转到object.position。如何获得平滑的旋转?这是渲染函数functionupdate(){lat=Math.max(-85,Math.min(85,lat));phi=THREE.Math.degToRad(90-lat);theta=THREE.Math.degToRad(l

javascript - three.js中 `THREE.OrbitControls`的相机位置变化

THREE.OrbitControls在加载初始相机位置时工作正常,但当使用按钮单击更改相机位置和相机旋转时。相机的位置发生变化,但是在单击Canvas以在新View上旋转相机时,相机的位置突然发生变化相机:Camera=newTHREE.PerspectiveCamera(45,Width/Height,0.1,1000);Camera.position.set(170,120,400);//intialcampositionScene.add(Camera);Camera.position.set(30,167,81);Camera.rotation.set(-0.149,0.3,

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 - 三个 : 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