首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应-3/xr平面检测

反应-3/xr平面检测
EN

Stack Overflow用户
提问于 2021-12-27 13:24:28
回答 2查看 429关注 0票数 1

在我的next.js项目中,我正在使用react 3/xr和react 3/drei。这段代码将3d模型I置于静态位置。

代码语言:javascript
复制
const Test: NextPage = () => {
return (
    <div className="testar">
        <ARCanvas>
            <ambientLight />
            <pointLight position={[10, 10, 10]} />
            <Suspense fallback={<Loader />}>
                <Model scale={0.01} />
            </Suspense>
        </ARCanvas>
    </div>
);

};

而且工作正常。现在我如何检测平面来放置物体呢?

EN

回答 2

Stack Overflow用户

发布于 2022-03-18 03:27:26

sessionInit={{ requiredFeatures: ['hit-test'] }添加到AR画布中,然后使用命中测试获取it位置,并将其作为模型的参考

https://www.npmjs.com/package/@react-three/xr

代码语言:javascript
复制
export default function App(){
 
 let hitPoint = useRef()

     useHitTest((hitMatrix, hit) => {
        hitMatrix.decompose(
            hitPoint.current.position, 
            hitPoint.current.rotation, 
            hitPoint.current.scale,
        )
     })

 return(     
      <ARCanvas sessionInit={{ requiredFeatures: ['hit-test'] }}>
        <Model ref={hitPoint} />
     </ARCanvas>
 );
}

票数 1
EN

Stack Overflow用户

发布于 2022-04-20 22:55:58

我利用这里的线索在码箱中构造了一个简单的模型。(代码如下)

在我的手机上的经验是,模型显示得很好。当我点击Start AR按钮时,盒子就会出现在我站的地方,离地面大约一米远。

然而,我不能拖放盒子,我也没有看到一个网线。

,我需要显式地处理命中结果吗?

这不是一个答案,但这段代码对某些人来说可能是信息丰富的。

代码语言:javascript
复制
import { useRef } from "react";
import { ARCanvas, useHitTest } from "@react-three/xr";
import { OrbitControls } from "@react-three/drei";

export default function App() {
  // wrap to avoid error: React-three-fiber hooks can only be used within the Canvas
  function Model() {
    let hitPoint = useRef();

    useHitTest((hitMatrix, hit) => {
      hitMatrix.decompose(
        hitPoint.current.position,
        hitPoint.current.rotation,
        hitPoint.current.scale
      );
    });

    return <boxGeometry ref={hitPoint} args={[1, 1, 1]} />;
  }

  return (
    <div style={{ backgroundColor: "lightblue", height: "100vh" }}>
      <ARCanvas sessionInit={{ requiredFeatures: ["hit-test"] }}>
        <mesh>
          <ambientLight intensity={0.5} />
          <directionalLight position={[-10, -10, -10]} />
          <Model />
          <meshStandardMaterial color="orange" />
        </mesh>
        <OrbitControls />
      </ARCanvas>
    </div>
  );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70496077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档