从Texture2D到Texture3D

我想知道如何从Texture2D创建Texture3D。

在此处输入图片说明

我找到了一些很好的例子:Unity 4-3D纹理(体积)Unity-3D纹理颜色校正查找纹理

int     dim = tex2D.height;
Color[] c2D = tex2D.GetPixels();
Color[] c3D = new Color[c2D.Length];
for (int x = 0; x < dim; ++x)
{
    for (int y = 0; y < dim; ++y)
    {
        for (int z = 0; z < dim; ++z)
        {
            int y_ = dim - y - 1;
            c3D[x + (y * dim) + (z * dim * dim)] = c2D[z * dim + x + y_ * dim * dim];
        }
    }
}

但这仅在您有

Texture2D.height= Mathf.FloorToInt(Mathf.Sqrt(Texture2D.width))

或者如果

Depth = Width = Height

当深度不等于宽度或高度时,如何提取值?看起来很简单,但我想念的东西...

非常感谢你。

尼科·谢特勒(Nico Schertler)

您可以按如下方式分割纹理:

//Iterate the result
for(int z = 0; z < depth; ++z)
    for(int y = 0; y < height; ++y)
        for(int x = 0; x < width; ++x)
            c3D[x + y * width + z * width * height]
              = c2D[x + y * width * depth + z * width]

您可以按以下方式获取此索引公式:

在x方向上前进1会导致增加1(仅下一个像素)。

在y方向上前进1会导致递增depth * width(跳过具有相应宽度的4张图像)。

在z方向上前进1会导致增加width(跳过一幅图像行)。

或者,如果您更喜欢另一个方向:

//Iterate the original image
for(int y = 0; y < height; ++y)
    for(int x = 0; x < width * depth; ++x)
         c3D[(x % width) + y * width + (x / width) * width * height] = c2D[x + y * width * depth];

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Texture2D到前面

来自分类Dev

无法创建暂存Texture3D

来自分类Dev

Texture2D到byte []到String

来自分类Dev

Texture2D到base64-Unity3d Web Player

来自分类Dev

Texture2D到base64-Unity3d Web Player

来自分类Dev

从Texture2D创建UI图像

来自分类Dev

Texture2D作为函数参数

来自分类Dev

Texture2D SetData错误

来自分类Dev

滚动RawImage中的Texture2D?

来自分类Dev

获取gameObject的Texture2D

来自分类Dev

修改HLSL中的全局texture3d变量

来自分类Dev

OpenGL Texture3D FragmentShader写入图层

来自分类Dev

使Texture2D在运行时/脚本Unity3D中可读

来自分类Dev

OpenGL使用Texture2D绘制到现有的HDC

来自分类Dev

Direct3D 11 / HLSL Texture3D <float3>错误错误?

来自分类Dev

Direct3D 11 / HLSL Texture3D <float3>错误错误?

来自分类Dev

在SharpDX中调整DXGI资源或Texture2D的大小

来自分类Dev

通过代码使Unity中的Texture2D可读

来自分类Dev

OpenGL ES 2.0 Texture2D索引

来自分类Dev

Unity:用于特定显示的Texture2D ReadPixels

来自分类Dev

如何使用很多Texture2D图层管理深度

来自分类Dev

OpenGL ES 2.0 Texture2D索引

来自分类Dev

texture2d矩形XNA不会初始化

来自分类Dev

片段着色器:texture2D()和texelFetch()

来自分类Dev

Unity:用于特定显示的Texture2D ReadPixels

来自分类Dev

渲染为无符号整数 texture2D

来自分类Dev

Unity:如何使用脚本更改 texture2d 的质量

来自分类Dev

DirectX11中Texture2D和Texture2DMS之间的区别

来自分类Dev

明智地填充texture3d切片