x3d - 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>
我显然错过了一些东西,对它/它们可能是什么有任何想法?
解决方案
问题的症结与 TextureImage 的旋转中心有关。它不会围绕图像的中心旋转(由 center 属性偏移)。
它围绕图像的 s,t 原点旋转。一旦我意识到这一点,就可以进行旋转和一些平移来重新定位图像,生活就美好了!
推荐阅读
- r - 如何修复语义仪表板中的布局?
- python - 在基础 Tensorflow 2.0 中运行简单回归
- sql - 如何有条件地对一组数值求和
- azure-devops - 具有多个工件的 AzureDevOps 发布管道
- python - 正则表达式匹配不同的日历日期格式日期 "M{0,1,2}/D{1,2}/Y{2,4}", "Y{4}"
- python - 通过字典排序
- conv-neural-network - 在运行 deeplab 代码时运行“sh local_test.sh”命令时出现“No Module named Tensorflow”错误
- cplex - 将 'sense' 和 'rhs' 从 CPLEX 转换为 CVXPY
- php - php多维数组在html表格视图中打印
- c++ - 根据不同的硬件在任意数量的线程上分配 for 循环