我有一个3D模型与UV映射创建搅拌机。我应用UV映射的方式,纹理只适用于模型的一侧。我将模型导出为obj和mtl。当我在three.js上导入这个模型时,它按预期工作,加载程序会自动将mtl文件中定义的图像作为纹理应用。
现在,我想在three.js中通过编程改变这个纹理。模型有多种材料(我认为是因为多张脸)。我如何重新应用的材料,保持UV映射和只是改变纹理应用?我想将map和envMap应用到模型中。
var m = new THREE.MeshPhongMaterial({
envMap:
我正在使用THREE.js OBJ加载器将模型导入场景。
我知道我能够导入几何图形,因为当我给它分配一个MeshNormalMaterial时,它会显示得很好。然而,如果我使用任何需要UV坐标的东西,它就会给出错误:
[.WebGLRenderingContext]GL ERROR :GL_INVALID_OPERATION : glDrawElements: attempt to access out of range vertices in attribute 1
我知道这是因为加载的OBJ没有UV坐标,但我想知道是否有任何方法来生成所需的纹理坐标。我试过了
material.needs
我已经成功地在搅拌器中使用骨骼动画技术制作了一个模型的动画,我还使用uv纹理在搅拌器中对其进行了纹理处理。然后在搅拌器中使用three.js导出插件,我已经导出了模型,确保uv和动画在检入。然而,我不知道为动画模型加载纹理的技术。我查看了three.js中包含的变形法线示例,其中使用了兰伯特材质的简单颜色纹理。我有来自外部文件的纹理。如何加载纹理。在js动画模型文件中,纹理是有位置的,并且它在相同的位置。但它不能加载。我也使用了面部材质技术。
我用来修改的three.js示例的位置:
下面是我的代码:
var loader = new THREE.JSONLoader();
我正在创建一个自定义的three.js应用程序,在其中我加载一个用于渲染的对象/MTL模型。我想要将自定义着色器应用于加载的模型,但我手动传递给RawShaderMaterial的颜色和镜面反射制服没有更新。或者更确切地说,它们都填充了相同的值。因此将我的模型渲染为相同的颜色。
他是一些示例代码。如果有简单的解决方案或更好的方法,我会很感兴趣的。
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath(path);
mtlLoader.load(mtlName, function(materials) {
var objLoader =
我正在使用Collada在Three.js r65中加载我的3D对象。在加载回调时,我使用下面的代码对模型的所有部分立即应用纹理。
var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
loader.load('obj/cdg/Grenada-test1.dae', function(collada) {
var texture = new THREE.ImageUtils.loadTexture("../models/textures/Gr1 08869 B
我在和Three.js玩。我正在进行一个使用旧版本Three.js的项目。我正在尝试用新的库(r71)替换旧的库。除了纹理映射,一切都进展顺利。
在旧的项目中,我们使用的是被废弃的Face4,它已经在Three.js的最新版本中被删除。所以我创建了两个Face3,而不是一个Face4。现在的问题是:我如何制作一个纹理来覆盖两个Face3,因为它们就像一个Face4?
使用Face4的旧伪码
numberOfFaces = 10;
function createMyGeometry(){
var geometry = new THREE.Geometry();
...
for (var i
最初的帖子在这里
这似乎不是一件微不足道的工作,因为在three.js网站上缺乏关于这个主题的文档和示例。
到目前为止,我可以让它渲染正确的图片,在@Mugen87的帮助下,它也可以投射阴影,但它仍然不能接收阴影。
这是来自上面链接的最新代码,我写在这里以便人们可以直接看到它,
var mat = new THREE.ShaderMaterial({
uniforms: THREE.UniformsUtils.merge([
THREE.UniformsLib.fog,
THREE.UniformsLib.
我让Three.JS运行在一个页面的div中,该页面使用引导程序x:200,y:150来为标题和导航区域腾出空间,如您在这里看到的:
我遇到的问题是使用ray_tracing / Vector3()函数,它没有读取正确的单击位置。使用以下代码:
function ray_tracing(e,objects){
var uv = new THREE.Vector3();
if (e.offsetX){ //chrome,ie,safari
uv.x = e.offsetX+(navarea.inn