首页 > 解决方案 > TextureTransform 的旋转

问题描述

我在旋转应用于 ElevationGrid 的 TextureTransform 时遇到了麻烦。我正在构建一个包含墙壁、地板和天花板(所有高程网格)的场景,除其他选项外,我希望能够为每个场景应用完整图像。

当然,要创建一个“房间”,每个高程网格必须从其原始位置旋转和/或平移,毫不奇怪,这会导致图像相应地旋转。

正如您从这个示例中所看到的,这一切都在发生,正如预期的那样。这是看原点。 在此处输入图像描述

在这里,我们正在查看原点对面的角落。 在此处输入图像描述

所有图像看起来都与我预期的完全一样,当我想开始旋转图像以使它们都保持一致时,问题就出现了。

为简单起见,我在这里指的是单个“墙”,它将是“东北”墙(第一张图像的右上角),它显示图像颠倒。

我的理解(这对我来说似乎很好,但显然有缺陷)是旋转基于图像的中心(可选地使用 center 属性进行偏移——我不是)。我知道旋转方向有些奇怪,但我不认为这是一个障碍(尽管我可能是错的)。

我可以弄清楚我想对每个图像做什么,这不是我的问题,我的问题是当我应用旋转时,我没有得到我期望的结果。

在这个例子中,在我看来,我想旋转 180 度(1.5708rad),但是当我这样做时,我得到了一个扭曲的图像(为了完整起见,我尝试了一个没有变化的负值)。

事实上,唯一能按预期工作的 2 个值是 0 和 2pi(完全旋转,实际上没有效果)。45、90 和 180 的所有“标准”旋转值只会产生垃圾。

这是有问题的“墙”在标记中的样子。

<Transform translation="0 3 0" rotation="1 0 0 1.5708" visible="True" onclick="ShowContextMenu(this, event)" render="true" bboxCenter="0,0,0" bboxSize="-1,-1,-1" center="0,0,0" scale="1,1,1" scaleOrientation="0,0,0,0">
    <Shape DEF="shape_egWallNE" render="true" visible="true" bboxCenter="0,0,0" bboxSize="-1,-1,-1" isPickable="true" id="Base__shape_egWallNE">
        <Appearance sortType="auto" alphaClipThreshold="0.1">
            <Material ambientIntensity="0.2" diffuseColor="0.8 0.8 0.8" emissiveColor="0,0,0" shininess="0.2" specularColor="0,0,0"></Material>
            <ImageTexture DEF="itegWallNE" url="/images/Campaign/fba19b32-46f0-4650-b260-a0079a907c28/TestImage.png" repeatS="false" repeatT="false" scale="true" hideChildren="true" id="Base__itegWallNE"></ImageTexture>
            <TextureTransform DEF="ttegWallNE" scale="1 1" rotation="0" center="0,0" translation="0,0" id="Base__ttegWallNE"></TextureTransform>
        </Appearance>
        <ElevationGrid egid="ab9258a8-2ddf-4214-a43a-9704f238fe26" egname="Wall NE" DEF="egWallNE" xDimension="8" xSpacing="1" zDimension="4" zSpacing="1" solid="true" height="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" ccw="true" useGeoCache="true" lit="true" colorPerVertex="true" normalPerVertex="true" id="Base__egWallNE"></ElevationGrid>
    </Shape>
</Transform>

我显然错过了一些东西,对它/它们可能是什么有任何想法?

标签: x3dx3dom

解决方案


问题的症结与 TextureImage 的旋转中心有关。它不会围绕图像的中心旋转(由 center 属性偏移)。

它围绕图像的 s,t 原点旋转。一旦我意识到这一点,就可以进行旋转和一些平移来重新定位图像,生活就美好了!


推荐阅读