gpt4 book ai didi

c# - VTK (Activiz 5.8.0) 纹理影响不透明度

转载 作者:行者123 更新时间:2023-11-30 12:56:06 25 4
gpt4 key购买 nike

当我尝试渲染包含透明对象(50% 透明度)和带纹理的不透明对象的场景时,透明对象变得更加褪色。如果纹理对象被隐藏,透明对象将再次获得其预期的透明度。

我使用 vtkTextureMapToSphere 将纹理映射到对象。请注意,下面代码中的 bounds 表示我应用纹理的 _polydata 对象的边界框。

vtkTextureMapToSphere textureMapper = vtkTextureMapToSphere.New();
textureMapper.SetInput(_polydata);
textureMapper.SetCenter(bounds.center[0], bounds.center[1], bounds.center[2]);
textureMapper.PreventSeamOn();

vtkTransformTextureCoords transformMap = vtkTransformTextureCoords.New();
double factorEnlarge = 4;
double scale = bounds.dimensions.Sum() / bounds.dimensions.Length / factorEnlarge;
transformMap.SetInputConnection(textureMapper.GetOutputPort());
transformMap.SetScale(scale, scale, scale);

vtkPolyDataMapper mapper = vtkPolyDataMapper.New();
mapper.SetInputConnection(transformMap.GetOutputPort());

vtkActor actor = vtkActor.New();
actor.SetTexture(texture);
actor.GetProperty().SetColor((double)color.R / 255, (double)color.G / 255, (double)color.B / 255);
actor.GetProperty().SetOpacity(alpha);
actor.SetMapper(mapper);
actor.GetProperty().SetInterpolationToPhong();

renderer.AddActor(actor);

Transparent object and textured object. Transparent object with textured object hidden

编辑

关闭vtkTextureMapToSphere 的PreventSeam 选项后,颜色差异就消失了。但是,无论您通过两个以上的网格表面(例如,在网格中有空腔的地方)进行观察,阴影仍然存在明显差异。

Detail of the transparent mesh after turning PreventSeam off, with the textured object shown. Note that the textured object is not in the screenshot Detail of the transparent mesh after turning PreventSeam off, with the textured object hidden.

最佳答案

好吧,如果我了解问题的当前状态,您会问如何去除由网格中的口袋引起的较暗颜色。如果这是正确的,您只需要弄清楚如何为您的部分透明网格激活遮挡剔除。不幸的是,我不熟悉 Activiz,所以我无法提供详细信息,但在 XNA (DirectX) 中,您需要更改 GraphicsDevice.BlendState 或创建自定义着色器,具体取决于您的最终目标。

我知道这并不多,但我希望它能有所帮助。

关于c# - VTK (Activiz 5.8.0) 纹理影响不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43671059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com