首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在3D空间中旋转图像的一部分

在3D空间中旋转图像的一部分
EN

Stack Overflow用户
提问于 2010-12-14 12:03:03
回答 4查看 2.1K关注 0票数 2

这里是设置:这是一个电子商务艺术网站,其中一些画是画布转移。这幅画围绕着画布的侧面和顶部和底部。我们有整幅画的高分辨率图像,但我们想要显示的是图像的准3D表示,在该图像中,您可以看到绘画的侧面是如何围绕画布的。以下是我正在讨论的内容的大致轮廓:

我的问题是,如何在3D空间中旋转图像?我想我想采取的方法是,切断图像顶部和侧面的一部分,然后在3D模式下旋转,然后将其粘贴回顶部和侧面,以使其具有3D外观。我该怎么做呢?它可以使用任何.Net技术(GDI+、WPF等)来完成。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-14 16:46:48

在WPF中,使用ViewPort3D类可以创建一个8x5x1单位的长方体。将图像创建为纹理,然后使用纹理坐标将纹理应用于正面(8x5)和侧面(5x1)以及顶面和底面(8x1)。正面坐标应该是:正面的(1/9,1/6),(8/9,1/6),(1/9,5/6)和(8/9,5/6),以及从最接近的边到侧面的坐标,例如对于左侧:(0,1/6),(1/9,1/6),(0,5/6)和(1/9,5/6)。

编辑:如果你希望能够在3D画布模型上执行旋转,你可以遵循这里的建议:How can I do 3D transformation in WPF?

票数 3
EN

Stack Overflow用户

发布于 2010-12-18 04:54:27

看起来你不需要做真正的3D,而只需要假装它。

沿着图像的顶部、底部、左侧和右侧切下四个条带。将底部和右侧抛出(根据问题中的草图)。缩放和剪切条带(我在.net/wpf方面还不够专业,但它可以做到这一点)。顶部将被垂直缩放0.5倍(猜测-选择适合所需的最终3D外观图像),并水平剪切。将结果合成到输出图像上,作为画布的顶端。左边的条带将被水平缩放并垂直剪切。

如果最终用户要从不同的角度交互地查看3D画布,则此方法可能比渲染真实的3D模型更快,后者必须进行纹理映射并将模型光栅化到最终图像中,这相当于执行相同的数学运算。有趣的部分是找出如何调整缩放和剪切参数。

这个页面可能很有教育意义:http://www.idomaths.com/linear_transformation.php

这可能是有用的参考http://en.csharp-online.net/GDIplus_Graphics_Transformation%E2%80%94Image_Transformation

票数 2
EN

Stack Overflow用户

发布于 2010-12-14 13:21:28

我在这方面没有任何经验。但是当我看到这个问题时,我首先想到的是关于SO的有趣的Unicornify

balpha的这篇making of文章中,他解释了2d独角兽球体是如何在3d空间中旋转的。

但是code是用python编写的。如果你感兴趣,你可以看看这个。但我不确定这是否会对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4435756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档