Blender OSL和P(位置)相对于对象比例

时间:2018-09-07 08:19:08

标签: shader blender

我正在搅拌器/循环脚本节点中的着色器。 我正在测试直接从Blender源代码获取的“噪声纹理”着色器,并将其放置在脚本节点中。

我不了解相对于对象比例,如何在库存噪声纹理节点和脚本节点中管理全局P。

如果在应用“杂色纹理”节点时缩放对象,则纹理不会改变(根据对象缩放)。

但是,如果我在应用脚本着色器时缩放对象,则纹理会发生变化……看起来纹理无法缩放,只是以不同的方式包装对象,因此如果我将其相对于对象“缩小”放大它,如果我缩小对象则更大。

这就像搅拌器将对象比例属性赋予“噪波纹理”,而没有将其赋予“脚本”节点。

任何信息或想法如何解决?

我可以手动更改着色器的Scale属性,但是我正在寻找更可靠的解决方案(如果有),因为我必须在不同的模型上进行很多测试。

谢谢。

1 个答案:

答案 0 :(得分:0)

我从https://blendersushi.blogspot.com/2013/08/osl-shader-writing-journey-to-unknown.html

找到了正确的方法
  

使用对象变换纹理
  为了避免“纹理游泳”,我们需要   将纹理空间分配给我们的OSL纹理。我们可以做到   直接在OSL内部或使用Blender Cycles纹理坐标节点   以及进入Vector位置的Mapping节点。

     

如果在下面添加单个代码,它将正确分配纹理空间   到“对象”空间。

     

point p = transform("object", P);