收藏
回答

请问 xr-frame 里如何获取当前mesh的材质贴图offset?

请问 xr-frame 里如何获取当前mesh的材质贴图offset?想做个像threejs贴图offset 循环位移的效果动画。

https://developers.weixin.qq.com/miniprogram/dev/framework/xr-frame/

回答关注问题邀请回答
收藏

2 个回答

  • Roam
    Roam
    2023-09-20

    看你的描述,感觉对应的是mesh里面,顶点的uv值

    2023-09-20
    有用
    回复 2
    • 阿龙
      阿龙
      2023-09-20
      就这个意思,移动uv实现纹理动画。不过UV不知道怎么获取,控制台打印只能找到uniforms数据,api里没找到这方面的说明(貌似API xr这块资料有点简单-_-),其中在组件里有个tex.updata的方法说是更新贴图的,直接测试没有成功,也没找到详细的方法说明。
      2023-09-20
      回复
    • Roam
      Roam
      2023-09-22回复阿龙
      不一定要直接改uv,如果要改的,你需要改渲染用的mesh里面geometry里面的具体顶点数值。
      如果只是需要增加offset,可以考虑用uvTransform来做。可以参考这个例子
      https://github.com/dtysky/xr-frame-demo/tree/master/miniprogram/components/template/xr-template-gltfUVAnimation
      2023-09-22
      回复
  • CRMEB
    CRMEB
    2023-09-14

    在每个渲染帧时,通过以下代码来获取当前mesh的材质贴图offset:

    const xrFrame = xrViewerRef.current.frame;
    const session = xrViewerRef.current.session;
    const glLayer = session.renderState.baseLayer;
    const views = xrFrame.getViewerPose(glLayer.space).views;
    // 获取当前相机的位置和旋转信息
    const cameraPosition = views[0].transform.position;
    const cameraRotation = views[0].transform.orientation;
    // 获取当前mesh的材质贴图offset
    const currentOffset = mesh.material.map.offset;
    
    2023-09-14
    有用
    回复 2
    • 阿龙
      阿龙
      2023-09-14
      这是小程序内置的xr-frame 方法嘛?api都没看到map值啊
      2023-09-14
      回复
    • CRMEB
      CRMEB
      2023-09-14回复阿龙
      或者使用WebXR API创建和设置场景、相机等相关元素
      2023-09-14
      回复
登录 后发表内容