草庐IT

javascript - 三.Object3D.add : object not an instance of THREE. Object3D

所以我遇到了这个错误,但我找不到它的来源。我相信这与我在场景中导入和创建3d对象有关,但我不确定我做错了什么。代码如下:我在调用init之前调用此函数functionloadObjects(){loader=newTHREE.JSONLoader();varfloorDiskmaterial=newTHREE.MeshPhongMaterial({map:THREE.ImageUtils.loadTexture('img/floor_test.jpg'),transparent:true,color:0xeaeaea,ambient:0xeaeaea,overdraw:0.5,//sp

javascript - 将几何添加到 THREE.Object3D

我已经编辑了这篇文章以使其更加清晰。好吧,我在这里要做的是表示一个由8个不同三Angular形组成的图block。每个三Angular形都应该能够独立地改变它的颜色。所以,我遇到的问题是,当我更改单个三Angular形的颜色时,它会更改中间线条的颜色,如您在第二张图片中所见。这是创建磁贴的代码:vartile=[];varn=0;for(vari=0;i要更新我使用此代码的Tile三Angular形的状态:for(varj=0;j这是更改Material的正确方法吗?我稍微简化了代码以更好地展示我的问题。但是,真正的代码在这个存储库中https://github.com/tul1/Ti

javascript - 三个JS : Text Sprite's font size difference between WebGL renderer and Canvas renderer

我正在使用三个JS来开发3d图形。我想将图表的单位显示为THREE.SPRITE。为了创建SPRITE,我首先创建了一个Canvas元素并向其中添加了文本。然后我用之前创建的Canvas元素创建了THREE.Texture。使用纹理作为贴图创建THREE.SpriteMaterial,然后使用此SpriteMaterial创建THREE.SPRITE。将此SpriteMaterial添加到场景中。当渲染器是THREE.WebGLRenderer的实例时,文本的大小非常小,而当渲染器是THREE.CanvasRenderer的实例时,文本的大小非常大.以下是我用来创建Sprite的代码。

javascript - three.js OBJLoader 没有加载 react

我正在尝试加载一个对象(.obj)文件以与three.js一起使用并使用react(使用react-three-renderer),但得到一个我的代码如下所示:importReactfrom'react';importReactDOMfrom'react-dom';importReact3from'react-three-renderer';importTrackballControlsfrom'./TrackballControls';import*asTHREEfrom'three';import*asOBJLoaderfrom'three-obj-loader';OBJLoade

javascript - 使用 THREE.Frustum 计算近/远平面顶点

我需要一些帮助来处理THREE.Frustum对象。我的问题:我需要计算近/远平面顶点;我看过这些教程http://www.lighthouse3d.com/tutorials/view-frustum-culling/view-frustums-shape/http://www.lighthouse3d.com/tutorials/view-frustum-culling/geometric-approach-extracting-the-planes/我已经勾画出这个函数完全实现(我希望如此)所解释的过程(只是为了获得左上角/右上角的顶点,假设相机只能向左和向右看)://NearP

javascript - 设置对象绕世界轴的绝对旋转

更新:添加了一个jsfiddle来说明:JSFiddle我有一个放置在场景中的对象(一个立方体)。我的目标是提供3个代表现实世界中物体方向的Angular。这些Angular将根据真实世界的X、Y和Z轴进行测量。我失败(悲惨地)是如何为对象提供这些Angular,然后随着数据的变化,将对象设置为接收新的三元组Angular。我似乎发现,当我设置一组初始Angular时,一切都很好,但是当我设置一组新Angular时,它们似乎是相对于局部对象空间方向而不是世界空间设置的。我试图理解该领域提出的一些类似问题,但这些问题似乎是关于围绕轴旋转对象,而不是明确设置对象相对于世界轴的Angular

javascript - Three.js - 如何反序列化 geometry.toJSON()? (geometry.fromJSON 在哪里?)

我正在尝试将一些Geometry加载和处理卸载到webworker中。要将其发送回主线程,需要对Geometry实例进行序列化,而且Geometry.prototype.toJSON()似乎正是用于此类事情.但我不知道如何在主线程中将该对象变回Geometry实例。应该如何使用toJSON()输出?PS:我看过thisrelatedquestion,但它似乎过时了。toJSON()还没有在API中。接受的答案有点令人费解,并且需要我仍然在主线程中做一些原始工作。 最佳答案 如果我理解正确,问题是:您有一个要作为几何体(obj、STL

javascript - Three.js动态改变光照强度

有没有一种我没见过的方法可以动态改变方向灯的光强度?甚至环境光?ambientLight=newTHREE.AmbientLight(0xffffff);scene.add(ambientLight);directionalLightL=newTHREE.DirectionalLight(0xffffff,dLight,0);directionalLightL.position.set(dlpX,dlpY,dlpZ);scene.add(directionalLightL);所以最初是为了渲染而完成的,但是我怎样才能在之后只改变一个特定的灯光强度呢?删除/重新添加灯?在dom中找到它并

javascript - THREE.JS场景中永无止境的地板

在我的canvasthree.js场景中创建一个各个方向连续的地板的最佳方法是什么?将THREE.PlaneGeometry附加到相机位置是否会更好,以便它与相机一起移动。或者是否有另一种使用纹理对场景的地板进行纹理化的方法。我在PlaneGeometry的可见性方面遇到了一些问题,出于某种原因,我必须与它保持一定距离才能看到它。/*Floor*/vargeometry=newTHREE.PlaneGeometry(1000,1000,1,1);varmaterial=newTHREE.MeshBasicMaterial({color:0x0000ff});varfloor=newTH

javascript - Three.js raycaster 可以与一个组相交吗?

我想知道我的raycaster是否正在查看我加载的OBJ。由于从Cinema4D导出的方式,我相信OBJ是一个有3个child的THREE.Group,而不是THREE.Object。我可以只更改我的raycaster代码行来查找这个组而不是对象吗?raycaster.set(controls.getObject().position,controls.getDirection(),0,40)varintersects=raycaster.intersectObjects(scene.children,true);if(intersects.length>0){//CURRENTLYI