对购买者来说是一个很好的消费体验,网上有很多这样的插件都是基于JQuery实现的
有收费的也有免费的,其实很好用的一个叫3deye.js的插件。该插件支持桌面与移动终
端iOS与Android,
所以先说一下它的360度全景图的原理
1. 首先需要对实物拍照,间隔是每张照片旋转15度,所以需要23张照片。
2. 照片准备好了以后,尽量选择JPG格式,裁剪到适当大小。
3. JAVASCRIPT中预加载所有照片,可以配合进度条显示加载精度
4. 创建/获取Canvas对象,加上鼠标监听事件,当鼠标左右移动时候,适度的绘制不
同帧。大致的原理就是这样,简单吧!
实现代码:
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8">
<title>Full 360 degree View</title>
<script>
var ctx = null// global variable 2d context
var frame = 1// 23
var width = 0
var height = 0
var started = false
var images = new Array()
var startedX = -1
window.onload = function() {
var canvas = document.getElementById("fullview_canvas")
canvas.width = 440// window.innerWidth
canvas.height = 691//window.innerHeight
width = canvas.width
height = canvas.height
var bar = document.getElementById('loadProgressBar')
for(var i=1i<24i++)
{
bar.value = i
if(i<10)
{
images[i] = new Image()
images[i].src = "0" + i + ".jpg"
}
else
{
images[i] = new Image()
images[i].src = i + ".jpg"
}
}
ctx = canvas.getContext("2d")
// mouse event
canvas.addEventListener("mousedown", doMouseDown, false)
canvas.addEventListener('mousemove', doMouseMove, false)
canvas.addEventListener('mouseup', doMouseUp, false)
// loaded()
// frame = 1
frame = 1
images[frame].onload = function() {
redraw()
bar.style.display = 'none'
}
}
function doMouseDown(event) {
var x = event.pageX
var y = event.pageY
var canvas = event.target
var loc = getPointOnCanvas(canvas, x, y)
console.log("mouse down at point( x:" + loc.x + ", y:" + loc.y + ")")
startedX = loc.x
started = true
}
function doMouseMove(event) {
var x = event.pageX
var y = event.pageY
var canvas = event.target
var loc = getPointOnCanvas(canvas, x, y)
if (started) {
var count = Math.floor(Math.abs((startedX - loc.x)/30))
var frameIndex = Math.floor((startedX - loc.x)/30)
while(count >0)
{
console.log("frameIndex = " + frameIndex)
count--
if(frameIndex >0)
{
frameIndex--
frame++
} else if(frameIndex <0)
{
frameIndex++
frame--
}
else if(frameIndex == 0)
{
break
}
if(frame >= 24)
{
frame = 1
}
if(frame <= 0)
{
frame = 23
}
redraw()
}
}
}
function doMouseUp(event) {
console.log("mouse up now")
if (started) {
doMouseMove(event)
startedX = -1
started = false
}
}
function getPointOnCanvas(canvas, x, y) {
var bbox = canvas.getBoundingClientRect()
return { x: x - bbox.left * (canvas.width / bbox.width),
y: y - bbox.top * (canvas.height / bbox.height)
}
}
function loaded() {
setTimeout( update, 1000/8)
}
function redraw()
{
// var imageObj = document.createElement("img")
// var imageObj = new Image()
var imageObj = images[frame]
ctx.clearRect(0, 0, width, height)
ctx.drawImage(imageObj, 0, 0, width, height)
}
function update() {
redraw()
frame++
if (frame >= 23) frame = 1
setTimeout( update, 1000/8)
}
</script>
</head>
<body>
<progress id="loadProgressBar" value="0" max="23"></progress>
<canvas id="fullview_canvas"></canvas>
<button onclick="loaded()">Auto Play</button>
</body>
</html>
改变文件顺序。在页面加载时,顺序加载引入的文件。要是jquery的js文件不是第一个被引入,那么别的js中的$.方法名就会报错。只有先引入了jquery的js文件,才能正确执行$.方法
3D视觉系统适用于各类服务机器人,可快速实现三维地图创建、避障、导航等功能,并可通过APP进行室内地图定位导航。比如奥比中光已与国内外超70%机器人厂商建立了合作关系。
应用场景主要有:
服务机器人:快速识别人脸、距离感知、活体检测、多模态联动,更加人性化,与人类更好的互动
医疗机器人:辅助医生临床诊断,实时监测病人身体状况,分析病人行为动作
工业机器人:3D传感采集丰富视觉信息,联动AI人工智能技术,让工业机器人更灵活、更智能,效率更高
特种机器人:可提供三维地图创建、避障、导航、定位等多种功能,代替人类完成各类高难度任务