Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
cqiang1993
AR.js
提交
825b0940
A
AR.js
项目概览
cqiang1993
/
AR.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
AR.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
825b0940
编写于
5月 04, 2017
作者:
J
Jerome Etienne
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more work
上级
579673f8
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
104 addition
and
66 deletion
+104
-66
README.md
README.md
+1
-1
three.js/examples/mobile-performance.html
three.js/examples/mobile-performance.html
+0
-7
three.js/examples/multi-markers/examples/learner.html
three.js/examples/multi-markers/examples/learner.html
+50
-25
three.js/examples/multi-markers/examples/player.html
three.js/examples/multi-markers/examples/player.html
+47
-19
three.js/examples/multi-markers/threex-armultimarkercontrols.js
...js/examples/multi-markers/threex-armultimarkercontrols.js
+5
-11
three.js/examples/multi-markers/threex-armultimarkerlearning.js
...js/examples/multi-markers/threex-armultimarkerlearning.js
+1
-3
未找到文件。
README.md
浏览文件 @
825b0940
...
...
@@ -183,7 +183,7 @@ Three.js Examples:
-
[
parameters-tunning
](
https://jeromeetienne.github.io/AR.js/three.js/examples/parameters-tunning.html
)
:
three.js example for parameters-tunning
(
[
source
](
https://github.com/jeromeetienne/AR.js/blob/master/three.js/examples/parameters-tunning.html
)
)
-
[
multi
marker
](
https://jeromeetienne.github.io/AR.js/three.js/examples/multi-markers/examples/player.html
)
:
-
[
multi
-markers
](
https://jeromeetienne.github.io/AR.js/three.js/examples/multi-markers/examples/player.html
)
:
multi markers examples - it shows how to dynamically learn a multi markers and then how to use it.
learner.html is a example of dynamic learning of a multi markers configuration. It has been designed
to be reusable.
...
...
three.js/examples/mobile-performance.html
浏览文件 @
825b0940
...
...
@@ -35,13 +35,6 @@
// init scene and camera
var
scene
=
new
THREE
.
Scene
();
var
ambient
=
new
THREE
.
AmbientLight
(
0x666666
);
scene
.
add
(
ambient
);
var
directionalLight
=
new
THREE
.
DirectionalLight
(
0x887766
);
directionalLight
.
position
.
set
(
-
1
,
1
,
1
).
normalize
();
scene
.
add
(
directionalLight
);
//////////////////////////////////////////////////////////////////////////////////
// Initialize a basic camera
//////////////////////////////////////////////////////////////////////////////////
...
...
three.js/examples/multi-markers/examples/learner.html
浏览文件 @
825b0940
...
...
@@ -91,11 +91,11 @@
// // to read from an image
// sourceType : 'image',
// sourceUrl :
'../../../
../data/images/multimarker.jpg'
// sourceUrl :
THREEx.ArToolkitContext.baseURL + '
../data/images/multimarker.jpg'
// to read from a video
// sourceType : 'video',
// sourceUrl :
'../../../
../data/videos/headtracking.mp4',
// sourceUrl :
THREEx.ArToolkitContext.baseURL + '
../data/videos/headtracking.mp4',
})
...
...
@@ -116,11 +116,12 @@
// create atToolkitContext
var
arToolkitContext
=
new
THREEx
.
ArToolkitContext
({
cameraParametersUrl
:
'
../../../
../data/data/camera_para.dat
'
,
cameraParametersUrl
:
THREEx
.
ArToolkitContext
.
baseURL
+
'
../data/data/camera_para.dat
'
,
detectionMode
:
'
mono
'
,
maxDetectionRate
:
30
,
canvasWidth
:
80
*
4
,
canvasHeight
:
60
*
4
,
// high accuracy of detection on purpose - important during learning
// canvasWidth: 80*4,
// canvasHeight: 60*4,
// debug: true,
})
// initialize it
...
...
@@ -142,37 +143,61 @@
var
hasHash
=
location
.
hash
.
substring
(
1
)
!==
''
?
true
:
false
if
(
hasHash
===
true
){
var
jsonData
=
JSON
.
parse
(
location
.
hash
.
substring
(
1
))
var
backURL
=
jsonData
.
backURL
var
markersControlsParameters
=
jsonData
.
markersControlsParameters
var
urlOptions
=
JSON
.
parse
(
location
.
hash
.
substring
(
1
))
}
else
{
var
urlOptions
=
{
backURL
:
null
,
markerControlsParameters
:
[],
}
alert
(
'
should not happen
'
)
}
// prepare the parameters
var
subMarkersControls
=
[]
markersControlsParameters
.
forEach
(
function
(
markerControlsParameters
){
urlOptions
.
markersControlsParameters
.
forEach
(
function
(
markerControlsParameters
){
// create a markerRoot
var
object3d
=
new
THREE
.
Object3D
()
scene
.
add
(
object3d
)
var
markerRoot
=
new
THREE
.
Group
()
scene
.
add
(
markerRoot
)
// create markerControls for our object3d
var
markerControls
=
new
THREEx
.
ArMarkerControls
(
arToolkitContext
,
object3d
,
markerControlsParameters
)
// create markerControls for our markerRoot
var
markerControls
=
new
THREEx
.
ArMarkerControls
(
arToolkitContext
,
markerRoot
,
markerControlsParameters
)
// TODO here put a THREEx.ArSmoothedControls behind a flag - could be useful for tunning
var
smoothedControls
=
null
if
(
false
){
// build a smoothedControls
var
smoothedRoot
=
new
THREE
.
Group
()
scene
.
add
(
smoothedRoot
)
var
smoothedControls
=
new
THREEx
.
ArSmoothedControls
(
smoothedRoot
)
onRenderFcts
.
push
(
function
(){
smoothedControls
.
update
(
markerRoot
)
})
}
if
(
true
){
// add an helper to visuable each sub-marker
var
markerHelper
=
new
THREEx
.
ArMarkerHelper
(
markerControls
)
if
(
smoothedControls
!==
null
){
smoothedControls
.
object3d
.
add
(
markerHelper
.
object3d
)
}
else
{
markerControls
.
object3d
.
add
(
markerHelper
.
object3d
)
}
// TODO here put a THREEx.ArSmoothedControls behind a flag - could be useful for tunning
// store it in the parameters
if
(
smoothedControls
!==
null
){
subMarkersControls
.
push
(
smoothedControls
)
}
else
{
subMarkersControls
.
push
(
markerControls
)
}
})
var
multiMarkerLearning
=
new
THREEx
.
ArMultiMakersLearning
(
subMarkersControls
)
window
.
multiMarkerLearning
=
multiMarkerLearning
var
multiMarkerLearning
=
new
THREEx
.
ArMultiMakersLearning
(
arToolkitContext
,
subMarkersControls
)
//
window.multiMarkerLearning = multiMarkerLearning
multiMarkerLearning
.
enabled
=
false
//////////////////////////////////////////////////////////////////////////////
...
...
@@ -208,27 +233,27 @@ window.multiMarkerLearning = multiMarkerLearning
// generate json file and store it
var
jsonString
=
multiMarkerLearning
.
toJSON
()
console
.
log
(
'
Writing multiMarkerFile
'
,
jsonString
)
localStorage
.
setItem
(
'
sample
MultiMarkerFile
'
,
jsonString
);
localStorage
.
setItem
(
'
ARjs
MultiMarkerFile
'
,
jsonString
);
// update application status
updateAppStatus
()
}
// honor ?url= if present
if
(
backURL
!==
null
){
if
(
urlOptions
.
backURL
!==
null
){
setTimeout
(
function
(){
location
.
href
=
backURL
location
.
href
=
urlOptions
.
backURL
},
1
)
}
}
function
onRecordClear
(){
localStorage
.
removeItem
(
'
sample
MultiMarkerFile
'
)
localStorage
.
removeItem
(
'
ARjs
MultiMarkerFile
'
)
updateAppStatus
()
}
function
updateAppStatus
(){
var
multiMarkerFile
=
localStorage
.
getItem
(
'
sample
MultiMarkerFile
'
);
var
multiMarkerFile
=
localStorage
.
getItem
(
'
ARjs
MultiMarkerFile
'
);
if
(
multiMarkerFile
===
null
){
document
.
querySelector
(
'
#dataStatus
'
).
innerHTML
=
'
none
'
}
else
{
...
...
three.js/examples/multi-markers/examples/player.html
浏览文件 @
825b0940
...
...
@@ -33,10 +33,14 @@
<br/>
<a
id=
'recordButton'
href=
'learner.html?url=player.html'
>
Record new area
</a>
<br/>
Markers Helper :
<a
href=
'javascript:void(0)'
onclick=
'urlOptions.markersHelper = true; reload()'
>
enable
</a>
/
<a
href=
'javascript:void(0)'
onclick=
'urlOptions.markersHelper = false; reload()'
>
disable
</a>
appMode :
<a
href=
'#areaUsing'
onclick=
'location.
reload()'
>
stored
</a>
<a
href=
'javascript:void(0)'
onclick=
'urlOptions.appMode = "areaUsing";
reload()'
>
stored
</a>
/
<a
href=
'#areaHardcoded'
onclick=
'location.
reload()'
>
hardcoded
</a>
<a
href=
'javascript:void(0)'
onclick=
'urlOptions.appMode = "areaHardcoded";
reload()'
>
hardcoded
</a>
</div><script>
;(
function
(){
//////////////////////////////////////////////////////////////////////////////////
...
...
@@ -48,6 +52,9 @@
antialias
:
true
,
alpha
:
true
});
renderer
.
shadowMap
.
type
=
THREE
.
PCFSoftShadowMap
renderer
.
shadowMap
.
enabled
=
true
;
renderer
.
setClearColor
(
new
THREE
.
Color
(
'
lightgrey
'
),
0
)
// renderer.setPixelRatio( 2 );
renderer
.
setSize
(
window
.
innerWidth
,
window
.
innerHeight
);
...
...
@@ -65,9 +72,6 @@
var
ambient
=
new
THREE
.
AmbientLight
(
0x666666
);
scene
.
add
(
ambient
);
var
directionalLight
=
new
THREE
.
DirectionalLight
(
0x887766
);
directionalLight
.
position
.
set
(
-
1
,
1
,
1
).
normalize
();
scene
.
add
(
directionalLight
);
//////////////////////////////////////////////////////////////////////////////////
// Initialize a basic camera
...
...
@@ -136,19 +140,33 @@
////////////////////////////////////////////////////////////////////////////////
var
appMode
=
location
.
hash
.
substring
(
1
)
||
'
areaUsing
'
if
(
location
.
hash
.
substring
(
1
)
===
''
)
location
.
hash
=
'
#
'
+
appMode
var
hasHash
=
location
.
hash
.
substring
(
1
)
!==
''
?
true
:
false
if
(
hasHash
===
true
){
var
urlOptions
=
JSON
.
parse
(
location
.
hash
.
substring
(
1
))
}
else
{
var
urlOptions
=
{
appMode
:
'
areaUsing
'
,
markersHelper
:
true
,
}
}
window
.
urlOptions
=
urlOptions
window
.
reload
=
function
(){
location
.
hash
=
'
#
'
+
JSON
.
stringify
(
urlOptions
)
location
.
reload
()
}
if
(
location
.
hash
.
substring
(
1
)
===
''
)
location
.
hash
=
'
#
'
+
JSON
.
stringify
(
urlOptions
)
if
(
appMode
===
'
areaUsing
'
&&
localStorage
.
getItem
(
'
sample
MultiMarkerFile
'
)
===
null
){
if
(
urlOptions
.
appMode
===
'
areaUsing
'
&&
localStorage
.
getItem
(
'
ARjs
MultiMarkerFile
'
)
===
null
){
alert
(
'
cant find sample multimarker.
'
)
appMode
=
'
areaHardcoded
'
urlOptions
.
appMode
=
'
areaHardcoded
'
}
if
(
appMode
===
'
areaUsing
'
){
console
.
assert
(
localStorage
.
getItem
(
'
sample
MultiMarkerFile
'
)
!==
null
)
multiMarkerPlay
(
localStorage
.
getItem
(
'
sample
MultiMarkerFile
'
))
}
else
if
(
appMode
===
'
areaHardcoded
'
){
if
(
urlOptions
.
appMode
===
'
areaUsing
'
){
console
.
assert
(
localStorage
.
getItem
(
'
ARjs
MultiMarkerFile
'
)
!==
null
)
multiMarkerPlay
(
localStorage
.
getItem
(
'
ARjs
MultiMarkerFile
'
))
}
else
if
(
urlOptions
.
appMode
===
'
areaHardcoded
'
){
multiMarkerPlayHarcoded
()
}
else
{
console
.
assert
(
'
unknown appMode
'
,
appMode
)
...
...
@@ -210,6 +228,15 @@
// build a multiMarkerControls
var
multiMarkerControls
=
THREEx
.
ArMultiMarkerControls
.
fromJSON
(
arToolkitContext
,
scene
,
markerRoot
,
multiMarkerFile
)
if
(
urlOptions
.
markersHelper
===
true
){
multiMarkerControls
.
markersControls
.
forEach
(
function
(
subMarkerControls
){
// add an helper to visuable each sub-marker
var
markerHelper
=
new
THREEx
.
ArMarkerHelper
(
subMarkerControls
)
subMarkerControls
.
object3d
.
add
(
markerHelper
.
object3d
)
})
}
// build a smoothedControls
var
smoothedRoot
=
new
THREE
.
Group
()
scene
.
add
(
smoothedRoot
)
...
...
@@ -227,6 +254,7 @@
var
averageMatrix
=
THREEx
.
ArMultiMarkerControls
.
computeCenter
(
multiMarkerFile
)
averageMatrix
.
decompose
(
markerScene
.
position
,
markerScene
.
quaternion
,
markerScene
.
scale
)
markerScene
.
scale
.
multiplyScalar
(
3
)
//////////////////////////////////////////////////////////////////////////////////
// add an object in the scene
//////////////////////////////////////////////////////////////////////////////////
...
...
three.js/examples/multi-markers/threex-armultimarkercontrols.js
浏览文件 @
825b0940
...
...
@@ -142,8 +142,8 @@ THREEx.ArMultiMarkerControls.averageVector3 = function(vector3Sum, vector3, coun
THREEx
.
ArMultiMarkerControls
.
fromJSON
=
function
(
arToolkitContext
,
scene
,
markerRoot
,
jsonData
){
var
multiMarkerFile
=
JSON
.
parse
(
jsonData
)
// declare the parameters
var
m
arkersControls
=
[]
var
m
arkerPoses
=
[]
var
subM
arkersControls
=
[]
var
subM
arkerPoses
=
[]
// prepare the parameters
multiMarkerFile
.
subMarkersControls
.
forEach
(
function
(
item
){
...
...
@@ -154,18 +154,12 @@ THREEx.ArMultiMarkerControls.fromJSON = function(arToolkitContext, scene, marker
// create markerControls for our object3d
var
subMarkerControls
=
new
THREEx
.
ArMarkerControls
(
arToolkitContext
,
object3d
,
item
.
parameters
)
if
(
true
){
// add an helper to visuable each sub-marker
var
markerHelper
=
new
THREEx
.
ArMarkerHelper
(
subMarkerControls
)
subMarkerControls
.
object3d
.
add
(
markerHelper
.
object3d
)
}
// store it in the parameters
m
arkersControls
.
push
(
subMarkerControls
)
m
arkerPoses
.
push
(
new
THREE
.
Matrix4
().
fromArray
(
item
.
poseMatrix
))
subM
arkersControls
.
push
(
subMarkerControls
)
subM
arkerPoses
.
push
(
new
THREE
.
Matrix4
().
fromArray
(
item
.
poseMatrix
))
})
// create a new THREEx.ArMultiMarkerControls
var
multiMarkerControls
=
new
THREEx
.
ArMultiMarkerControls
(
markerRoot
,
markersControls
,
m
arkerPoses
)
var
multiMarkerControls
=
new
THREEx
.
ArMultiMarkerControls
(
markerRoot
,
subMarkersControls
,
subM
arkerPoses
)
// return it
return
multiMarkerControls
...
...
three.js/examples/multi-markers/threex-armultimarkerlearning.js
浏览文件 @
825b0940
var
THREEx
=
THREEx
||
{}
THREEx
.
ArMultiMakersLearning
=
function
(
subMarkersControls
){
THREEx
.
ArMultiMakersLearning
=
function
(
arToolkitContext
,
subMarkersControls
){
var
_this
=
this
// Init variables
...
...
@@ -9,8 +9,6 @@ THREEx.ArMultiMakersLearning = function(subMarkersControls){
// listen to arToolkitContext event 'sourceProcessed'
// - after we fully processed one image, aka when we know all detected poses in it
var
originSubControls
=
this
.
subMarkersControls
[
0
]
var
arToolkitContext
=
originSubControls
.
context
arToolkitContext
.
addEventListener
(
'
sourceProcessed
'
,
function
(){
_this
.
_onSourceProcessed
()
})
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录