当前位置: 首页 > 知识库问答 >
问题:

旋转父组后反应三纤维更新网格矩阵

令狐昌胤
2023-03-14

谢谢你花时间看我的问题。

我用的是三根纤维。我试图将小盒子连接到网格的两侧。我从光线投射器获得了长方体网格的位置。

我的问题是,在旋转父组后,t恤网格的矩阵似乎是反向的。据我所知,光线投射器是基于这个矩阵工作的。我确实尝试过updateMatrix()和updateMatrix World(),但结果令人困惑。

在这样旋转组之后,更新子矩阵的标准方法是什么?任何帮助都将不胜感激。

这是我问题的一个例证。请注意,红色鼠标助手在翻转后消失,因为它现在位于相反的一侧。

这就是场景的组件结构。

return (
        <a.group rotation={flipModelAnimation.rotation} ref={groupRef}>
            <mesh
                ref={modelRef}
                geometry={glb}
            >
                <meshStandardMaterial attach="material" color="orange" />
            </mesh>
            {event && <MouseHelper event={event} />}
            <Decals decals={decalArray} />
        </a.group>
    );

共有1个答案

危璞
2023-03-14

好的,当我看到它时,这很简单...我把鼠标助手放在我正在旋转的组里,所以很自然,它现在会出现在背面。所以不是因为一个错误的矩阵。我不认为鼠标助手本身很重要,所以我最初甚至没有把它包括在代码示例中。我现在添加它是为了把问题和解决方案说清楚。

 类似资料:
  • 我目前在react three fiber的一个项目中工作。我已经从@react three/drei导入了带有useGLTF的模型。 与 我访问glb文件中的材料。为了访问和操作模型,我使用gltfjsx生成模型。 现在我需要以编程方式更改网格的材质。因为我不能直接访问模型的JSX,所以我用React.clone元素来修改网格的道具。 所以我尝试了这样的方法: 如果为false,则该选项有效。它

  • 我正在使用React Three Fiber和“Drei”,并想使用广告牌。但我只知道如何改变广告牌的颜色,而不知道如何添加纹理。 我试过这样做,但在广告牌上找不到任何文档,也不知道我能传递什么样的论点。 在这里,您可以看到如何更改颜色,但不能看到如何添加纹理: https://drei.react-spring.io/?path=/story/abstractions-布告牌——布告牌街 希望有

  • 我已成功地将gltf对象加载到我的react three fiber场景中。现在,我想将材质附着到模型。在这个模型上可以使用标准材料吗?以下是我尝试过的: 常量形状=(道具)=

  • 我试图在一个简单的react三纤维场景中动态更改“.gltf”模型的纹理贴图值。如果我理解正确,您必须在材质上添加纹理文件,然后将材质添加到模型中?在我的场景中,纹理文件被烘焙到“.gltf”文件中。我想用jsx更改alphaMap的不透明度等值。 这是我的沙箱:https://codesandbox.io/s/patient-framework-3holn?file=/src/App.js 我知

  • 一个表示3X3矩阵matrix.的类。 代码示例 const m = new Matrix3(); 注意行优先列优先的顺序。 set()方法参数采用行优先row-major, 而它们在内部是用列优先column-major顺序存储在数组当中。 这意味着 m.set( 11, 12, 13, 21, 22, 23, 31, 32, 33 );元素数组elements将存储

  • 假设我使用大小为8的字符数组来表示图像的碰撞掩码。字符的每一位代表一个像素。实际上,对于64x64矩阵,我将使用长[64]阵列。 因此,框将显示为: 45度的示例输出应该是这样的,尽管旋转可以是任何角度。这个形状对于45度旋转可能不准确,因为我是用手做的。 另一个例子是向右旋转10度?这些值可能是错误的,因为从数学上讲,我不知道它将如何精确旋转,但我认为可以安全地假设,如果每个位的覆盖率超过旧形状