使用AR.js打造WebAR入门课程(四)——基于地理位置的示例自行更换模型

上一篇文章只是实现了官网上面的基于位置的示例,这一篇文章稍微进阶一点,来了解一下基于位置的一些参数和怎样自行更换模型。

首先我们先把上一篇文章中的代码贴出来简单解释一下,然后再在这个基础上更改。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>GeoAR.js demo</title>
    <script src="https://aframe.io/releases/1.0.4/aframe.min.js"></script>
    <script src="https://unpkg.com/aframe-look-at-component@0.8.0/dist/aframe-look-at-component.min.js"></script>
    <!-- 在这里我把这个js文件的路径更改成了本地的,因为官方示例的这个js文件没有梯子访问不到,文件具体的获取方式可以看下我前面的两篇文章(直接在github上面下载下来就行了) -->
    <script src="js/aframe-ar-nft.js"></script>
  </head>
 
  <body style="margin: 0; overflow: hidden;">
    <a-scene
      vr-mode-ui="enabled: false"
      embedded
      arjs="sourceType: webcam; debugUIEnabled: false;"
    >
        <!-- 下面的gps-entity-place指的就是经纬度,尽量精确一些,手机上面自带的指南针获取到的经纬度都不太精确,我用了一个第三方软件叫做“经纬度定位”,类似的软件有不少,大家可以自己找一下 -->
      <a-text
        value="This content will always face you."
        look-at="[gps-camera]"
        scale="120 120 120"
        gps-entity-place="latitude: 38.9414000; longitude: 117.2820480;"
      ></a-text>
      <a-camera gps-camera rotation-reader> </a-camera>
    </a-scene>
  </body>
</html>

上面比较重要的要解释的标签主要是两个,一个是a-text,另一个就是a-camera,这两个使我们可以控制的两个主要的标签。

首先说a-camera,这个标签是必须要有的,而且只能有一个,大概意思就是摄像机,里面增加了gps-camera代表是基于位置的,这个标签里面的一些属性是可以自己设置的,只不过上面的代码中并没有进行设置,都是采取的默认的,下面把官网翻译后的参数贴出来:

参数描述默认值
alertGPS讯号不足时是否显示讯息 positionMinAccuracyfalse
positionMinAccuracy位置信号允许的最低精度100
minDistance如果设置,则与用户的距离小于此值的位置不会显示。只允许一个正值。价值以米为单位。0(禁用)
maxDistance如果设置,则与用户的距离大于此值的位置不会显示。只允许一个正值。价值以米为单位。0(禁用)
simulateLatitude设置此项可以模拟摄像机的纬度,以帮助进行测试。0(禁用)
simulateLongitude设置此项可以模拟摄像机的经度,以帮助进行测试。0(禁用)
simulateAltitude设置此项可以模拟摄像机海拔高度(以米为单位)的高度,以帮助进行测试。0(禁用)
gpsMinDistance设置此项可以控制摄像机必须移动多远(以米为单位)以生成GPS更新事件。有助于防止由于位置的频繁微小变化而导致“跳出”增强内容。5
gpsTimeInterval设置此项可让您控制获取新GPS位置的频率。如果缓存了先前的GPS位置,则如果“年龄”小于此值(以毫秒为单位),则将使用缓存的位置,而不是新的位置。此参数直接传递给Geolocation API的watchPosition()方法。0(始终使用新位置,不缓存)

大部分时候这些参数我们是不用管的,然后再来说一下a-text这个标签。

这个标签其实就相当于一个实例,这个实例可以是文字,可以是模型,也可以是其他的东西,因为在示例代码里面放的是一串文字,所以就用的a-text这个标签,相同功能的标签还有a-box(正方体),a-entity(模型实体)。这个标签是可以无线添加的,也就是说一个场景中可以有很多个实例。在放置了这些实例之后,只要在标签里面的参数标注好经纬度,也就是想要放置的位置就可以了。

了解了这些之后我们就可以自己放置自己想要的,下面的代码示例我是放置了一串文字,一个正方体和一个模型,大家想要放置别的可以自己更改:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>GeoAR.js demo</title>
    <script src="https://aframe.io/releases/1.0.4/aframe.min.js"></script>
    <script src="https://unpkg.com/aframe-look-at-component@0.8.0/dist/aframe-look-at-component.min.js"></script>
    <script src="js/aframe-ar-nft.js"></script>
  </head>

  <body style="margin: 0; overflow: hidden;">
    <a-scene
      vr-mode-ui="enabled: false"
      embedded
      arjs="sourceType: webcam; debugUIEnabled: false;"
    >
    <!-- 模型实例 -->
	<a-entity
	  gltf-model="module/qiche.gltf"
	  scale="2 2 2"
	  gps-entity-place="latitude: 37.9414000; longitude: 116.2820480"
	  position="0 -10 0"
	></a-entity>
    <!-- 正方体实例 -->
	<a-box 
	material="color: yellow" 
	gps-entity-place="latitude: 37.9414000; longitude: 116.2820480"/>
    <!-- 文字实例 --> 
    <a-text
        value="This content will always face you."
        look-at="[gps-camera]"
        scale="120 120 120"
        gps-entity-place="latitude: 37.9414000; longitude: 116.2820480;"
      ></a-text>
      <a-camera gps-camera rotation-reader> </a-camera>
    </a-scene>
  </body>
</html>

下面是官方文档:https://ar-js-org.github.io/AR.js-Docs/

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值