草庐IT

javascript - 如何绘制具有补间动画效果的三个js线几何体?

我是Three.js的新手。我想在3D空间上绘制曲线(基于一些参数方程),使用THREE.JS,来说明绘制路径。为了实现这个基本上我尝试了两种方式:方法一:更新几何中的值。:varlineGeometry=newTHREE.Geometry();lineGeometry.vertices.push(newTHREE.Vector3(starting_x,starting_y,starting_z));varlineMaterial=newTHREE.LineBasicMaterial({color:0xffffff});varline=newTHREE.Mesh(lineGeometr

javascript - 如何在 THREE.js 中检查场景中是否存在对象?

我想通过点击向我的场景添加和删除对象。只是我使用scene.add(object)和scene.remove(object)。有什么方法可以检查场景中是否存在对象? 最佳答案 将对象添加到场景时,为该对象添加名称,如object.name='object_name';然后你可以检查你的对象是否存在于场景中scene.getObjectByName('object_name');如果它返回任何对象,则表示对象存在于场景中。 关于javascript-如何在THREE.js中检查场景中是否存

javascript - 三个js光线转换OBJ

您好!我有一个三个js并尝试将它用于我的项目。问题是-我需要选择从OBJ文件加载的自定义网格。我创建了简单的raycaster、简单的立方体和我的模型(也是立方体)。问题是-我可以对立方体进行光线转换,但它看不到我的模型。我哪里有问题?varcontainer,stats;varcamera,scene,projector,renderer;varparticleMaterial;vartextureLoader;varmodelLoader;varobjects=[];init();animate();functioninit(){container=document.createE

javascript - THREE.js:错误消息 "THREE.OBJLoader is not a constructor"

我刚开始学习three.js的使用。看起来很好,但现在我有一个问题,我无法解决。我想加载一个OBJ文件,这是我之前在blender中创建的。为此,我正在尝试使用THREE.OBJloader。我从http://mamboleoo.be/learnThree/复制了代码,但我在第32行收到错误消息“THREE.OBJLoader不是构造函数”。其他一切正常:添加场景、添加Material、添加立方体等。为了简单起见,这是代码:varrenderer,scene,camera,banana;varww=window.innerWidth,wh=window.innerHeight;func

javascript - 更改 Three.js collada 对象的纹理和颜色

我最近从官方网站获得了three.js示例,该示例使用ColladaLoader.js处理我的collada对象(.dae)。现在我的问题是,如何更改加载的collada对象颜色属性并添加自定义纹理?我尝试添加纹理,但还没有成功。这是我的代码(与原始示例略有不同):functionload_model(el){if(!Detector.webgl)Detector.addGetWebGLMessage();varcontainer,stats;varcamera,scene,renderer,objects;varparticleLight,pointLight;vardae,skin

xml - 如何使用 Ruby 删除重复的 XML 节点?

假设我有这样的结构:343有没有办法做到这一点:34使用Ruby的库?我设法得到this使用Nokogiri。从我的测试来看,它似乎有效,但也许还有另一种方法,一种更好的方法。 最佳答案 用两行来完成整个事情怎么样?seen=Hash.new(0)node.traverse{|n|n.unlinkif(seen[n.to_xml]+=1)>1}如果同一个节点有可能出现在两个不同的父节点下,而您不希望它们被视为重复节点,您可以将第二行更改为:node.traverse{|n|n.unlinkif(seen[(n.parent.path

javascript - Three.js - 发光的球体

我有一个问题。我想制作一个像光源(太阳)一样工作的球体。我发现meshPhongMaterial有一个选项,例如emissive:color和shininess:intensity但我没有设法对太阳进行编码。有谁知道该怎么做?谢谢解答! 最佳答案 如果您想要创建发光风格的效果,我在http://stemkoski.github.io/Three.js/上写了很多示例。这可能会有所帮助,包括:http://stemkoski.github.io/Three.js/Selective-Glow.html附带博客文章http://stem

javascript - 如何清除 THREE.JS 场景

我正在尝试寻找在不破坏场景本身的情况下清除场景中所有对象的方法。我知道命名对象是一种方式,然后当我们想要删除对象时,我们只是通过它的名字“得到”它。但是,我想找到一种快速的方法来清除其中所有对象的场景,而不管它们的名称。有简单的方法吗?谢谢! 最佳答案 可以遍历场景的子对象,将它们一一移除。正如评论中所建议的那样,这应该以相反的顺序完成,以免修改您正在迭代的元素。while(scene.children.length>0){scene.remove(scene.children[0]);}注意:这只是对对象层次结构的快速而肮脏的清除

javascript - THREE.meshphongmaterial 不工作 - 呈现黑色

我正在尝试使用本教程中的THREE.meshphongmaterial:http://solutiondesign.com/webgl-and-three-js-texture-mapping/但它不工作并给出黑色。这是它的jsfiddle:http://jsfiddle.net/8hrk7mu6/12/问题在第32行:varmaterial=newTHREE.MeshPhongMaterial({ambient:0x050505,color:0x0033ff,specular:0x555555,shininess:30});为什么它不起作用?如果我使用THREE.MeshNormal

javascript - 用网格填充 three.js 场景

我在找什么在three.js场景中显示填充整个场景的网格。在这种情况下,场景是整个窗口。这个网格代表一个3D表面,可以使用THREE.TrackballControls用鼠标四处移动这个网格面向相机,所以最初它看起来像一个平面(2D)表面,直到轨迹球被移动用鼠标四处移动。网格线的宽度应等于渲染器的宽度。我做了什么我已经设置了一个工作jsFiddle对于我到目前为止所做的。首先我找到场景的边界(所有这些都在jsFiddle中),App=function(sceneContainerName){this.sceneContainerName=sceneContainerName;this.