none
材质应用问题 RRS feed

  • 问题

  • 给曲面应用材质后,由于给定的图形文件尺寸有限,使得“衔接”处显示异常,就是出现不规则条纹状图形。我应该从何处入手解决该问题。

    korn
    • 已编辑 Tom Korn 2011年2月28日 3:20
    2011年2月28日 3:15

答案

  • 你好 Tom Korn,

    首先我先解释一下关于给曲面使用材质的原理,然后我再给你一个方向关于:

    ----> 我应该从何处入手解决该问题

    一般我们用2D图形给3D图像上色是要转化坐标的,比如你要使用一个平面的矩形给一个3D的立方体上材质,那么我们就必须要将2D矩形的4个点转化成3D图像的4个坐标点,从(0,0)-->(0,0,0)。

    这样的图像比较简单,所以我们可以通过人工的计算,然后转换。

    但是如果你现在要应用到3D的曲面上面,这样就是一个十分十分复杂的工程,因为要转化成N多N多的三角形,这个计算量不是我们人工能去实现的,因此,我不介意你自己去这样计算。根据这个原理,我想你之所以出现了你说的那种情况是因为 在转化的过程中你的坐标点计算的有些误差,你可以考虑从这方面着手解决你的问题。

    当然我不推荐你这样做,你可以使用软件去帮助你完成这一个过程,比如 ZAM 3D,你可以使用这个去完成你的需求。

     

    Best regards,


    Sheldon _Xiao [MSFT]

    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手

    2011年3月1日 6:17
    版主
  • 好的,可以将帖子设为“已解决”,以后有新进展时再讨论吧。感谢版主的关注和建议。
    korn
    2011年3月10日 0:09

全部回复

  • 我如何上传图片?
    korn
    2011年2月28日 3:17
  • 如果你要上传网络上的图片, 直接粘贴复制就行。

    如果你要上传本地图片, 你要先将本地图片上传到网络上(比如Skydrive),然后粘贴复制到这里。


    Stay hungry, stay foolish
    2011年2月28日 5:35
  • 你好 Tom Korn,

    首先我先解释一下关于给曲面使用材质的原理,然后我再给你一个方向关于:

    ----> 我应该从何处入手解决该问题

    一般我们用2D图形给3D图像上色是要转化坐标的,比如你要使用一个平面的矩形给一个3D的立方体上材质,那么我们就必须要将2D矩形的4个点转化成3D图像的4个坐标点,从(0,0)-->(0,0,0)。

    这样的图像比较简单,所以我们可以通过人工的计算,然后转换。

    但是如果你现在要应用到3D的曲面上面,这样就是一个十分十分复杂的工程,因为要转化成N多N多的三角形,这个计算量不是我们人工能去实现的,因此,我不介意你自己去这样计算。根据这个原理,我想你之所以出现了你说的那种情况是因为 在转化的过程中你的坐标点计算的有些误差,你可以考虑从这方面着手解决你的问题。

    当然我不推荐你这样做,你可以使用软件去帮助你完成这一个过程,比如 ZAM 3D,你可以使用这个去完成你的需求。

     

    Best regards,


    Sheldon _Xiao [MSFT]

    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手

    2011年3月1日 6:17
    版主
  • Sheldon _Xiao 版主 您好:

    我是这样做的:

    for (int m = 0; m < cloneLandSurfacesPoints.Count; m++)
       outLandTexturePoints.Add(new Point(((cloneLandSurfacesPoints[m].X * ratioXY) % textureWidth) / textureWidth, ((cloneLandSurfacesPoints[m].Y * ratioXY) % textureHeight) / textureHeight));
    //outLandTexturePoints--曲面的TextureCoordinates
    //cloneLandSurfacesPoints--节点坐标(现场实际坐标)
    //ratioXY--现场实际坐标和现实屏幕尺寸的转换比率
    //textureWidth,textureHeight--材质图像文件像素尺寸

    显示出来的效果是:每当达到图像文件尺寸大小,需要从头开始衔接下一次的图像时,接缝处显示异常!


    korn
    2011年3月2日 3:21
  • Sheldon _Xiao 版主 您好:

    我是这样做的:

    for (int m = 0; m < cloneLandSurfacesPoints.Count; m++)
       outLandTexturePoints.Add(new Point(((cloneLandSurfacesPoints[m].X * ratioXY) % textureWidth) / textureWidth, ((cloneLandSurfacesPoints[m].Y * ratioXY) % textureHeight) / textureHeight));
    //outLandTexturePoints--曲面的TextureCoordinates
    //cloneLandSurfacesPoints--节点坐标(现场实际坐标)
    //ratioXY--现场实际坐标和现实屏幕尺寸的转换比率
    //textureWidth,textureHeight--材质图像文件像素尺寸

    显示出来的效果是:每当达到图像文件尺寸大小,需要从头开始衔接下一次的图像时,接缝处显示异常!


    korn


    显示效果图:

    <a href="http://b62.photo.store.qq.com/http_imgload.cgi?/rurl4_b=629fc1e398747854d9c8f9dcbed1f31d3a722871afffb1408206771ec22288df870e2168e743c25124878ebbf463e2c7c8542b1adfcb63de3da4d3bbc1261edb484dfffeedf7d69d415170d6f8f10dfe286988cb&amp;a=65&amp;b=62" />

    网格图:

    <a href="http://b62.photo.store.qq.com/http_imgload.cgi?/rurl4_b=629fc1e398747854d9c8f9dcbed1f31d3a722871afffb1408206771ec22288df870e2168e743c25124878ebbf463e2c7c8542b1adfcb63de3da4d3bbc1261edb484dfffeedf7d69d415170d6f8f10dfe286988cb&amp;a=65&amp;b=62" />
    

    korn
    2011年3月2日 3:39
  • 我觉得你这个问题很难直接究其因,我昨天花了很长时间看你这种问题,没有什么突破性进展,还是我第一个回复那样,我觉得用ZAM 3D做会好点。

    不知道你那边有没有什么进展。


    Sheldon _Xiao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月3日 3:41
    版主
  • 首先感谢Sheldon _Xiao 版主的关注。

    我下载了ZAM_3D,它是通过建模创建xaml兼容的三维模型的,我的问题是动态建模,在模型表面施加材质的,似乎ZAM_3D解决不了我的问题。

    问题的关键是在采用位图作为表面Material时,如何能够平滑地过渡,除了和曲面的TextureCoordinates 有关外,这应该和ImageBrush的TileMode、Stretch等因素相关,但是我调整过这几个参数,似乎仍然解决不了问题,我很无奈,继续关注这个问题吧!


    korn
    2011年3月4日 0:31
  • 我在这个问题上很难完美的解决你的问题, 你看看有没有其他的方法可以实现同样的效果,如果有,我试着用其他方法去达到你的要求。

     

    Best regards,


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月7日 5:46
    版主
  • Korn,我在等你的回复~

    另外,在这个帖子中你获得你想要的信息了么?

    根据你的回复,我要判断可否将你的帖子关闭为“已解决”。

    谢谢


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月9日 7:20
    版主
  • 好的,可以将帖子设为“已解决”,以后有新进展时再讨论吧。感谢版主的关注和建议。
    korn
    2011年3月10日 0:09