three.js基本纹理飞溅,需要帮助吗

大家好,
我是新来的Three.js&;3D
我的目标是将多个纹理混合到一张脸上,不透明度百分比
纹理飞溅纹理飞溅-维基百科24
一些问题(初学者)n1. 有没有一个基本的例子?有了三个js,我找不到非常基本的东西,要理解这个过程,我能找到的最好的例子就是这个:stackoverflow.com纹理喷溅Three.js42、html、3d、,three.js,webgl古吉森在UTC时间9月13日晚上7:30-18时问这很好,但我有两个主要问题;这一部分似乎是最重要的,听起来像是魔法黑色巫术数学vec4>vec4>vec4>vec4>vec4>有人能进一步解释我吗?我猜有些“分割”是0.01、0.25、0.24、0.27……但这是我能理解的全部。smoothstep(0.01, 0.25, vAmount) - smoothstep(0.24, 0.26, vAmount)) * texture2D( oceanTexture, vUV * 10.0 //-0.24 .26?why 24-26// … * 10 .?why * 10// last segmentwhy does it stop at 50-65 and not 99 ?我猜全球的想法是“这个像素有5%的草纹理+10%的海洋纹理+25%的水…”但我的大脑无法将这个想法和背后的数学联系起来……我欢迎任何能帮助我的人为什么要使用它着色器?我将着色器视为“实时-性能-后处理”,假设我有一个128*1282D数组,我的土地和空间…我有一个森林纹理我在渲染时有一个雪纹理,我正在寻找这种类型的>,它永远不会改变。难道我不应该自己预先计算静态“RGB”加载,而不是对着色器进行后处理吗?如果你有25个不同的场地而不是5个,那么前面的例子还可以吗?在我看到的其他一些教程中,ppl解释了如何使用AlphaChannel来“组合”,没有提到着色器做这项工作……我认为纹理不透明度已经足够了我有点不知所措,Thx用于阅读和帮助基本上很简单,你只是将所有层的链混合在一起。但是,如果您需要很多层,尤其是当它们也有凹凸/法线贴图时,这种方法也会成为性能瓶颈,因为这种方法将始终从所有层中采样,因此会使纹理获取量增加一倍或三倍。25是很多,因为每次调用都会更改从中采样的纹理。要减少上下文切换,可以在一个权重纹理中存储4个权重,而不是25个,因为这意味着50个样本和不同的纹理。你可以测试一下,看看它是否能满足你的需要,并将你游戏中需要的所有东西瞄准你的设备。我为行星引擎设计的另一种方法是一个带有瓷砖地图册的空间加权地图。将4通道纹理用于4个权重,将另外4通道用于atlas中的瓷砖索引,这样可以在4k atlas纹理中使用多达64个512x512瓷砖/层。权重贴图更难处理,因为一个像素最多只能存储4层,但这并不是一个限制。如果你使用地形刷你的SEF,这是可以避免的,不管怎么说,这种方法需要什么。它将回迁减少到6,在本例中,访问64个不同的层。如果可伸缩性不是一个优先考虑的问题,我会选择标准的纹理展开方法,看看它如何与您需要的层数配合使用。Thx for your fast reply我已经理解您的全局想法,很好//但我仍在学习,要为我实现更高的数学为我的其他问题:着色器:好的数学:好的,在几个小时和实验之后,倾斜基本示例我想尝试一个“alpha map”基本版本,虽然这样可以,但是不// load WATER texture = new THREE.TextureLoader().load( = = new THREE.TextureLoader().load( = new THREE.MeshPhongMaterial({alphaMap : alphaSand,map : sandyTexture,transparent : true});// Render// TEST>}And, according this is possible, what is the right way to go : , this way (easier to write), or shader way ?Best regards, merf23:to high to implement for me yetBeen>Passing multiple materials will not superimpose them or combine them. It allows a mesh to have a different material on each face (via Geometry.faces[i].materialIndex), not on the same face.I think it actually is possible, i think i\"ve seen an example some where. You add multiple groups with the same range. titansoftime:It allows a mesh to have a different material on each face (via Geometry.faces[i].materialIndex), not on the same faceoh, i forgot a 3d object has multiple facesThis is a good point pailhead:think it actually is possiblewhile now afterreading many others docs, i am convinced shader is the way to go(https://www.khronos.org/opengl/wiki/Texture_Combiners 10 )i am kinda sure it\"s an opengl \"core\" possibilityglEnable(GL_BLEND);glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);const float>所以在同一个面上使用alpha透明渲染2个或更多纹理不是三个的基本特征?透明度只是使整个对象透明?我想学习如何做。不说它的>;着色器,只是好奇的编辑:它的工作非常完美,有两个网格在同一个位置…但我怀疑这是怎么做的?嗯,让我总结一下情况:,如果我错了,请纠正我…这是我的结论:所有带有alpha透明纹理贴图的纹理都已过时?新的且100%更好的方法是:将纹理设置为着色器的“全局变量”使用一些额外的假纹理,不是作为视觉信息,而是传递x,y的“物理逻辑”信息,以便着色器可以计算–无论什么-例如,让我们说:Wantalitude,经度,%humidty,年龄,表面类型…要确定对最终外观的影响,TODO:必须创建一个“假>vec4>vec4>vec4>vec4>有人能进一步解释我吗?我猜有些“分割”是0.01、0.25、0.24、0.27……但这是我能理解的全部。smoothstep(0.01, 0.25, vAmount) - smoothstep(0.24, 0.26, vAmount)) * texture2D( oceanTexture, vUV * 10.0 //-0.24 .26?why 24-26// … * 10 .?why * 10// last segmentwhy does it stop at 50-65 and not 99 ?我猜全球的想法是“这个像素有5%的草纹理+10%的海洋纹理+25%的水…”但我的大脑无法将这个想法和背后的数学联系起来……我欢迎任何能帮助我的人为什么要使用它着色器?我将着色器视为“实时-性能-后处理”,假设我有一个128*1282D数组,我的土地和空间…我有一个森林纹理我在渲染时有一个雪纹理,我正在寻找这种类型的>,它永远不会改变。难道我不应该自己预先计算静态“RGB”加载,而不是对着色器进行后处理吗?如果你有25个不同的场地而不是5个,那么前面的例子还可以吗?在我看到的其他一些教程中,ppl解释了如何使用AlphaChannel来“组合”,没有提到着色器做这项工作……我认为纹理不透明度已经足够了我有点不知所措,Thx用于阅读和帮助基本上很简单,你只是将所有层的链混合在一起。但是,如果您需要很多层,尤其是当它们也有凹凸/法线贴图时,这种方法也会成为性能瓶颈,因为这种方法将始终从所有层中采样,因此会使纹理获取量增加一倍或三倍。25是很多,因为每次调用都会更改从中采样的纹理。要减少上下文切换,可以在一个权重纹理中存储4个权重,而不是25个,因为这意味着50个样本和不同的纹理。你可以测试一下,看看它是否能满足你的需要,并将你游戏中需要的所有东西瞄准你的设备。我为行星引擎设计的另一种方法是一个带有瓷砖地图册的空间加权地图。将4通道纹理用于4个权重,将另外4通道用于atlas中的瓷砖索引,这样可以在4k atlas纹理中使用多达64个512x512瓷砖/层。权重贴图更难处理,因为一个像素最多只能存储4层,但这并不是一个限制。如果你使用地形刷你的SEF,这是可以避免的,不管怎么说,这种方法需要什么。它将回迁减少到6,在本例中,访问64个不同的层。如果可伸缩性不是一个优先考虑的问题,我会选择标准的纹理展开方法,看看它如何与您需要的层数配合使用。Thx for your fast reply我已经理解您的全局想法,很好//但我仍在学习,要为我实现更高的数学为我的其他问题:着色器:好的数学:好的,在几个小时和实验之后,倾斜基本示例我想尝试一个“alpha map”基本版本,虽然这样可以,但是不// load WATER texture = new THREE.TextureLoader().load( = = new THREE.TextureLoader().load( = new THREE.MeshPhongMaterial({alphaMap : alphaSand,map : sandyTexture,transparent : true});// Render// TEST>}And, according this is possible, what is the right way to go : , this way (easier to write), or shader way ?Best regards, merf23:to high to implement for me yetBeen>Passing multiple materials will not superimpose them or combine them. It allows a mesh to have a different material on each face (via Geometry.faces[i].materialIndex), not on the same face.I think it actually is possible, i think i\"ve seen an example some where. You add multiple groups with the same range. titansoftime:It allows a mesh to have a different material on each face (via Geometry.faces[i].materialIndex), not on the same faceoh, i forgot a 3d object has multiple facesThis is a good point pailhead:think it actually is possiblewhile now afterreading many others docs, i am convinced shader is the way to go(https://www.khronos.org/opengl/wiki/Texture_Combiners 10 )i am kinda sure it\"s an opengl \"core\" possibilityglEnable(GL_BLEND);glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);const float>所以在同一个面上使用alpha透明渲染2个或更多纹理不是三个的基本特征?透明度只是使整个对象透明?我想学习如何做。不说它的>;着色器,只是好奇的编辑:它的工作非常完美,有两个网格在同一个位置…但我怀疑这是怎么做的?嗯,让我总结一下情况:,如果我错了,请纠正我…这是我的结论:所有带有alpha透明纹理贴图的纹理都已过时?新的且100%更好的方法是:将纹理设置为着色器的“全局变量”使用一些额外的假纹理,不是作为视觉信息,而是传递x,y的“物理逻辑”信息,以便着色器可以计算–无论什么-例如,让我们说:Wantalitude,经度,%humidty,年龄,表面类型…要确定对最终外观的影响,TODO:必须创建一个“假>}And, according this is possible, what is the right way to go : , this way (easier to write), or shader way ?Best regards, merf23:to high to implement for me yetBeen>Passing multiple materials will not superimpose them or combine them. It allows a mesh to have a different material on each face (via Geometry.faces[i].materialIndex), not on the same face.I think it actually is possible, i think i\"ve seen an example some where. You add multiple groups with the same range. titansoftime:It allows a mesh to have a different material on each face (via Geometry.faces[i].materialIndex), not on the same faceoh, i forgot a 3d object has multiple facesThis is a good point pailhead:think it actually is possiblewhile now afterreading many others docs, i am convinced shader is the way to go(https://www.khronos.org/opengl/wiki/Texture_Combiners 10 )i am kinda sure it\"s an opengl \"core\" possibilityglEnable(GL_BLEND);glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);const float>所以在同一个面上使用alpha透明渲染2个或更多纹理不是三个的基本特征?透明度只是使整个对象透明?我想学习如何做。不说它的>;着色器,只是好奇的编辑:它的工作非常完美,有两个网格在同一个位置…但我怀疑这是怎么做的?嗯,让我总结一下情况:,如果我错了,请纠正我…这是我的结论:所有带有alpha透明纹理贴图的纹理都已过时?新的且100%更好的方法是:将纹理设置为着色器的“全局变量”使用一些额外的假纹理,不是作为视觉信息,而是传递x,y的“物理逻辑”信息,以便着色器可以计算–无论什么-例如,让我们说:Wantalitude,经度,%humidty,年龄,表面类型…要确定对最终外观的影响,TODO:必须创建一个“假><n Basic Texture Splatting, need helpn

three.js[已解决]正交摄影机的变换控件:gizmos缩放问题

您好,我正在使用带轨道控制的正交摄影机。我注意到当缩放照相机变焦不改变相机的位置(如透视相机)。首先,我想知道为什么这两个相机的实现方式不同?第二,我也在使用TransformControls,对于透视摄影机,更新功能上的小控件的重新缩放在这个等式中非常有效>但是使用OrbitControls更改缩放而不是正交摄影机的位置时,它没有正常工作。我试着像这样在等式中添加缩放,但没有得到任何好的结果>我应该以不同的方式包括它吗?我应该使用其他控件吗?谢谢大家的帮助!NaDaMa:首先,我很想了解为什么这两个摄像头...

日期:2021-12-11 08:00:01 浏览:1739

three.js多次渲染同一模型(obj模型),FPS要低得多

我试图在程序中渲染150个相同的树模型,但FPS突然从60下降到30+。你能告诉我什么是最好的解决办法吗?非常感谢。和平与爱。skr有两种典型的方法可以解决这个性能问题(太多的绘制调用):- 使用实例化渲染- 将所有几何体合并为一个几何体(因此只有一个网格)...

日期:2021-12-11 08:00:02 浏览:1746

three.js可缩放场景背景

three.js大家好,我有一个场景,由一个物体(反射雕像)组成,保持在一个漂亮背景的中心。我一直在使用威尼斯日落矩形hdr地图作为我的场景背景它既可以作为环境地图,也可以作为背景我看到背景不会与场景中渲染的网格一起缩放。这给人一种场景完全是假的感觉。i、 e状态向上/向下缩放,但背景不缩放。目前,我已经禁用了放大/缩小功能,这样用户就不会感到害怕。我的问题是:1. 当轨道控制放大/缩小时,我是否需要在此处使用一些着色器魔法来放大或缩小场景背景,以便看起来场景中的所有对象都在均匀缩放?或者这根本不可能做到?...

日期:2021-12-11 09:00:02 浏览:1272

three.js移动导入的Gltf模型

three.js我导入了我的gltf模型并将其添加到场景中,但现在如果我尝试移动它,它将不会=新建三、几何();var=混音器( 模型动画[0]>如何移动模式?Prakar_Srivastava:var>3D对象不能是Geometry或BufferGeometry类型。它应该是Object3D或类似Mesh、Points或Line的派生类的实例。在您的情况下,我只是这样声明变量:var mode;在动画循环中,执行以下操作:如果(mod!==未定义)>还请记住,基本3D场景的重要部分在代码片段中丢失(例如相...

日期:2021-12-11 10:00:01 浏览:1111

three.js平面明暗处理的问题

three.js嗨!我在项目中使用节点材质。我在模型渲染方面有问题。它看起来像是真实的平面阴影。如何平滑多边形?也有点像低分辨率阴影纹理贴图的自阴影。可能不是,但可能是。@Arkadiy\\u Vinkovskiy您需要在您的帖子中添加更多细节。屏幕截图不足以说明这里发生了什么。始终包括引起问题的代码,如果您使用的是模型,也要包括这些代码。更好的是,使用codepe制作一个工作示例...

日期:2021-12-11 10:00:02 浏览:997

three.js如何渲染立方体材质?

您好,直到昨天,我才相信Object3D是一组网格,而网格是一组几何体+材质,每个对象只有一个对象。我发现了立方体材质的结构,因此object3D的网格包含1个几何体(boxGeometry)和6个材质!所以问题是,这种网格的渲染效果如何?有关于它的文件吗?(这是为了提高我对three.js)非常感谢还有其他问题,与我的上一个帖子相关,如果一个网格中可能有多个材质,如何设置CustomDistanceMaterial以考虑所有材质的所有贴图?elysium11:所以问题是,渲染如何在这种类型的网格上工作?您...

日期:2021-12-11 11:00:03 浏览:856

three.js如何创建要在网格中拟合的线段

three.js伙计们,我想帮忙,假设我有一个这样的网格图像718×729 1.25 KB我想在网格面内创建线段,也就是说,我想将网格转换成这样的线图像710×828 740字节有人能帮忙吗???...

日期:2021-12-11 12:00:01 浏览:908

three.jsGLTFLoader.js这是我的登记簿错误

three.js每当我试着做决定的时候3.GLTFLoader对象我收到此错误代码:“未捕获类型错误:这是我的登记簿不是一个函数“我需要帮助!由Penta#u Trax在post#5中解决我最终发现我一直在使用错误的文件,当你需要使用jsm/example时,我使用的是js/example。其他东西也是个问题。但这是问题的基础。你能给我们看看你的代码吗?通常,如果你使用的是import语句,GLTFLoader不需要在前面加三个字符。好的,所以在这之前,我刚刚关注了这个视频,因为它是去年发布的。但是现在我试...

日期:2021-12-11 12:00:02 浏览:1068

three.js使用threejs的光流

嘿,我需要通过我的屏幕显示一束移动的光束。我不想使用任何模型或动画。我想知道我是否可以单独使用threejs来实现这一点。我也应该能够控制其运动的颜色强度和路径。嗨!也许这会有帮助:GitHub-jeromeetienne/三倍体积聚光灯: three.js扩展以提供体积聚光灯13,用于可视化光锥。您可以使用THREE.Curve()设置其路径。控制颜色强度,可能取决于曲线上的位置,也可以使用tween.js或者GSAP用于复杂的动画。创造力取决于您这是您想要的吗?https://threejs.org/e...

日期:2021-12-11 13:00:01 浏览:1315

three.js使用光线投射动态绘制多边形

我要画多边形three.js具有交点。为此,我使用下面的函数。首先,我使用光线投射器在第一个交点的第一个点添加球体。每次单击后,在交点处创建新球体,并在该交点和上一点之间创建线。现在,我希望在第一次单击时关闭多边形指向或单击该点周围。如何实现此目标。raycaster params是否与网格一起工作以检测鼠标位置周围的网格?function checkIntersectionclick() = raycaster.intersectObjects(addedObject, true);if (interse...

日期:2021-12-11 13:00:02 浏览:868