Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
x3domlet
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
3
Issues
3
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Elphel
x3domlet
Commits
583463e8
Commit
583463e8
authored
7 years ago
by
Oleg Dzhimiev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. matching function 2. partial derivs for rotation matrix
parent
b6eab19c
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
246 additions
and
8 deletions
+246
-8
ui.css
js/ui.css
+1
-1
ui_extra_models.js
js/ui_extra_models.js
+36
-6
ui_extra_models_match.js
js/ui_extra_models_match.js
+205
-0
ui_init.js
js/ui_init.js
+3
-1
viewer.html
viewer.html
+1
-0
No files found.
js/ui.css
View file @
583463e8
...
@@ -426,6 +426,6 @@ html, body, #x3d_wrapper {
...
@@ -426,6 +426,6 @@ html, body, #x3d_wrapper {
text-align
:
right
;
text-align
:
right
;
}
}
#mpr_save
,
#mpr_save_marks
{
#mpr_save
,
#mpr_save_marks
,
#mpr_match
{
margin
:
0px
5px
5px
5px
;
margin
:
0px
5px
5px
5px
;
}
}
This diff is collapsed.
Click to expand it.
js/ui_extra_models.js
View file @
583463e8
...
@@ -94,6 +94,7 @@ function manualposor_init(){
...
@@ -94,6 +94,7 @@ function manualposor_init(){
'<div>'
,
'<div>'
,
' <div><button id=
\'
mpr_save
\'
>save kmls</button></div>'
,
' <div><button id=
\'
mpr_save
\'
>save kmls</button></div>'
,
' <div><button id=
\'
mpr_save_marks
\'
title=
\'
save to file
\'
>save marks</button></div>'
,
' <div><button id=
\'
mpr_save_marks
\'
title=
\'
save to file
\'
>save marks</button></div>'
,
' <div><button id=
\'
mpr_match
\'
title=
\'
run models matching algorithm
\'
>Match models</button></div>'
,
'</div>'
,
'</div>'
,
].
join
(
'
\
n'
));
].
join
(
'
\
n'
));
...
@@ -212,12 +213,18 @@ function manualposor_init(){
...
@@ -212,12 +213,18 @@ function manualposor_init(){
});
});
$
(
"#mpr_match"
).
on
(
'click'
,
function
(){
x3dom_align_models
();
});
}
}
function
mpr_marks_load
(){
function
mpr_marks_load
(){
$
.
ajax
({
$
.
ajax
({
url
:
[
SETTINGS
.
basepath
,
SETTINGS
.
path
,
"marks.xml"
].
join
(
"/"
),
url
:
[
SETTINGS
.
basepath
,
SETTINGS
.
path
,
"marks.xml"
].
join
(
"/"
),
success
:
function
(
response
){
success
:
function
(
response
){
$
(
response
).
find
(
"record"
).
each
(
function
(){
$
(
response
).
find
(
"record"
).
each
(
function
(){
...
@@ -229,20 +236,28 @@ function mpr_marks_load(){
...
@@ -229,20 +236,28 @@ function mpr_marks_load(){
var
p1
=
$
(
marks
[
0
]).
attr
(
"position"
).
split
(
","
);
var
p1
=
$
(
marks
[
0
]).
attr
(
"position"
).
split
(
","
);
var
p1l
=
new
x3dom
.
fields
.
SFVec3f
(
p1
[
0
],
p1
[
1
],
p1
[
2
]);
var
p1l
=
new
x3dom
.
fields
.
SFVec3f
(
p1
[
0
],
p1
[
1
],
p1
[
2
]);
var
c1
=
$
(
marks
[
0
]).
attr
(
"camera"
).
split
(
","
);
var
c1l
=
new
x3dom
.
fields
.
SFVec3f
(
c1
[
0
],
c1
[
1
],
c1
[
2
]);
var
name2
=
$
(
marks
[
1
]).
attr
(
"model"
);
var
name2
=
$
(
marks
[
1
]).
attr
(
"model"
);
var
p2
=
$
(
marks
[
1
]).
attr
(
"position"
).
split
(
","
);
var
p2
=
$
(
marks
[
1
]).
attr
(
"position"
).
split
(
","
);
var
p2l
=
new
x3dom
.
fields
.
SFVec3f
(
p2
[
0
],
p2
[
1
],
p2
[
2
]);
var
p2l
=
new
x3dom
.
fields
.
SFVec3f
(
p2
[
0
],
p2
[
1
],
p2
[
2
]);
var
c2
=
$
(
marks
[
1
]).
attr
(
"camera"
).
split
(
","
);
var
c2l
=
new
x3dom
.
fields
.
SFVec3f
(
c2
[
0
],
c2
[
1
],
c2
[
2
]);
// local position is constant
// local position is constant
Data
.
mpr
.
markers
.
push
({
Data
.
mpr
.
markers
.
push
({
uid
:
uid
,
uid
:
uid
,
m1
:{
m1
:{
name
:
name1
,
name
:
name1
,
position
:
p1l
position
:
p1l
,
camera
:
c1l
},
},
m2
:{
m2
:{
name
:
name2
,
name
:
name2
,
position
:
p2l
position
:
p2l
,
camera
:
c2l
}
}
});
});
...
@@ -251,9 +266,17 @@ function mpr_marks_load(){
...
@@ -251,9 +266,17 @@ function mpr_marks_load(){
MPR_MARKS_LOADED
=
true
;
MPR_MARKS_LOADED
=
true
;
},
},
error
:
function
(
response
){
error
:
function
(
response
){
if
(
response
.
status
==
200
){
this
.
success
(
response
.
responseText
);
}
else
{
console
.
log
(
"mpr markers failed"
);
}
MPR_MARKS_LOADED
=
true
;
MPR_MARKS_LOADED
=
true
;
}
}
});
});
}
}
...
@@ -900,13 +923,18 @@ function manualposor_newMarksPair(ray1,ray2){
...
@@ -900,13 +923,18 @@ function manualposor_newMarksPair(ray1,ray2){
var
size
=
1
*
SETTINGS
.
markersize_k
*
d
;
var
size
=
1
*
SETTINGS
.
markersize_k
*
d
;
var
color
=
x3dom_autocolor
();
var
color
=
x3dom_autocolor
();
var
vmat
=
Scene
.
element
.
runtime
.
viewMatrix
().
inverse
();
var
camera
=
vmat
.
e3
();
var
target1
=
$
(
"inline[name=x3d_"
+
name1
+
"]"
);
var
target1
=
$
(
"inline[name=x3d_"
+
name1
+
"]"
);
var
m
=
x3dom_getTransorm_from_2_parents
(
target1
);
var
m
=
x3dom_getTransorm_from_2_parents
(
target1
);
var
p1l
=
m
.
inverse
().
multMatrixVec
(
p1
);
var
p1l
=
m
.
inverse
().
multMatrixVec
(
p1
);
var
c1l
=
m
.
inverse
().
multMatrixVec
(
camera
);
var
target2
=
$
(
"inline[name=x3d_"
+
name2
+
"]"
);
var
target2
=
$
(
"inline[name=x3d_"
+
name2
+
"]"
);
m
=
x3dom_getTransorm_from_2_parents
(
target2
);
m
=
x3dom_getTransorm_from_2_parents
(
target2
);
var
p2l
=
m
.
inverse
().
multMatrixVec
(
p2
);
var
p2l
=
m
.
inverse
().
multMatrixVec
(
p2
);
var
c2l
=
m
.
inverse
().
multMatrixVec
(
camera
);
new
MPRMarker
({
target
:
target1
.
parent
(),
uid
:
uid
,
model
:
name1
,
position
:
p1l
,
size
:
size
,
color
:
color
});
new
MPRMarker
({
target
:
target1
.
parent
(),
uid
:
uid
,
model
:
name1
,
position
:
p1l
,
size
:
size
,
color
:
color
});
new
MPRMarker
({
target
:
target2
.
parent
(),
uid
:
uid
,
model
:
name2
,
position
:
p2l
,
size
:
size
,
color
:
color
});
new
MPRMarker
({
target
:
target2
.
parent
(),
uid
:
uid
,
model
:
name2
,
position
:
p2l
,
size
:
size
,
color
:
color
});
...
@@ -916,11 +944,13 @@ function manualposor_newMarksPair(ray1,ray2){
...
@@ -916,11 +944,13 @@ function manualposor_newMarksPair(ray1,ray2){
uid
:
uid
,
uid
:
uid
,
m1
:{
m1
:{
name
:
name1
,
name
:
name1
,
position
:
p1l
position
:
p1l
,
camera
:
c1l
},
},
m2
:{
m2
:{
name
:
name2
,
name
:
name2
,
position
:
p2l
position
:
p2l
,
camera
:
c2l
}
}
});
});
...
@@ -1032,8 +1062,8 @@ function mpr_markers_to_xml(){
...
@@ -1032,8 +1062,8 @@ function mpr_markers_to_xml(){
str
[
i
]
=
[
str
[
i
]
=
[
' <record uid=
\'
'
+
rec
.
uid
+
'
\'
>'
,
' <record uid=
\'
'
+
rec
.
uid
+
'
\'
>'
,
' <mark model=
\'
'
+
rec
.
m1
.
name
+
'
\'
position=
\'
'
+
rec
.
m1
.
position
.
x
+
','
+
rec
.
m1
.
position
.
y
+
','
+
rec
.
m1
.
position
.
z
+
'
\'
></mark>'
,
' <mark model=
\'
'
+
rec
.
m1
.
name
+
'
\'
position=
\'
'
+
rec
.
m1
.
position
.
x
+
','
+
rec
.
m1
.
position
.
y
+
','
+
rec
.
m1
.
position
.
z
+
'
\'
camera=
\'
'
+
rec
.
m1
.
camera
.
x
+
','
+
rec
.
m1
.
camera
.
y
+
','
+
rec
.
m1
.
camera
.
z
+
'
\'
></mark>'
,
' <mark model=
\'
'
+
rec
.
m2
.
name
+
'
\'
position=
\'
'
+
rec
.
m2
.
position
.
x
+
','
+
rec
.
m2
.
position
.
y
+
','
+
rec
.
m2
.
position
.
z
+
'
\'
></mark>'
,
' <mark model=
\'
'
+
rec
.
m2
.
name
+
'
\'
position=
\'
'
+
rec
.
m2
.
position
.
x
+
','
+
rec
.
m2
.
position
.
y
+
','
+
rec
.
m2
.
position
.
z
+
'
\'
camera=
\'
'
+
rec
.
m2
.
camera
.
x
+
','
+
rec
.
m2
.
camera
.
y
+
','
+
rec
.
m2
.
camera
.
z
+
'
\'
></mark>'
,
' </record>'
' </record>'
].
join
(
"
\n
"
);
].
join
(
"
\n
"
);
...
...
This diff is collapsed.
Click to expand it.
js/ui_extra_models_match.js
0 → 100644
View file @
583463e8
function
x3dom_align_models
(){
// do models have to loaded?
var
marks
=
Data
.
mpr
.
markers
;
for
(
var
i
=
0
;
i
<
marks
.
length
;
i
++
){
console
.
log
(
"Marks pair # "
+
i
);
var
mark
=
marks
[
i
];
var
inline1
=
$
(
'inline[name=x3d_'
+
mark
.
m1
.
name
+
']'
);
var
inline2
=
$
(
'inline[name=x3d_'
+
mark
.
m2
.
name
+
']'
);
if
((
inline1
.
length
!=
0
)
&&
(
inline2
.
length
!=
0
)){
var
p1_1
=
mark
.
m1
.
position
;
var
p2_2
=
mark
.
m2
.
position
;
var
c1
=
mark
.
m1
.
camera
;
var
c2
=
mark
.
m2
.
camera
;
var
m1
=
x3dom_getTransorm_from_2_parents
(
inline1
);
var
m2
=
x3dom_getTransorm_from_2_parents
(
inline2
);
// from inline2 to inline1
var
m
=
m1
.
inverse
().
mult
(
m2
);
// p2 in inline1's coordinates
var
p2_1
=
m
.
multMatrixVec
(
p2_2
);
var
v1
=
p1_1
.
subtract
(
c1
);
var
v2
=
p2_1
.
subtract
(
c1
);
var
vcro
=
v1
.
cross
(
v2
);
var
vsca
=
v1
.
dot
(
v2
);
console
.
log
(
" before scaling:"
+
vcro
.
toString
());
console
.
log
(
" scalar product:"
+
vsca
);
vcro
=
vcro
.
multiply
(
1
/
vsca
);
console
.
log
(
" after scaling:"
+
vcro
.
toString
());
console
.
log
(
" length:"
+
vcro
.
length
());
// // from inline1 to inline2
// m = m.inverse();
// // p1 in inline2's coordinates
// var p1_2 = m.multMatrixVec(p1_1);
//
// var v1 = p1_2.subtract(c2);
// var v2 = p2_2.subtract(c2);
// var vcro = v1.cross(v2);
// var vsca = v1.dot(v2);
// console.log(" before scaling:"+vcro.toString());
// console.log(" scalar product:"+vsca);
// vcro = vcro.multiply(1/vsca);
// console.log(" after scaling:"+vcro.toString());
// console.log(" length:"+vcro.length());
}
}
}
function
mpr_R
(
d
){
var
sin
=
Math
.
sin
;
var
cos
=
Math
.
cos
;
var
_00
=
sin
(
d
.
psi
)
*
sin
(
d
.
theta
)
*
sin
(
d
.
phi
)
+
cos
(
d
.
psi
)
*
cos
(
d
.
phi
);
var
_01
=
-
sin
(
d
.
psi
)
*
sin
(
d
.
theta
)
*
cos
(
d
.
phi
)
+
cos
(
d
.
psi
)
*
sin
(
d
.
phi
);
var
_02
=
-
sin
(
d
.
psi
)
*
cos
(
d
.
theta
);
var
_03
=
-
d
.
x
;
var
_10
=
-
cos
(
d
.
theta
)
*
sin
(
d
.
phi
);
var
_11
=
cos
(
d
.
theta
)
*
cos
(
d
.
phi
);
var
_12
=
-
sin
(
d
.
theta
);
var
_13
=
-
d
.
y
;
var
_20
=
-
cos
(
d
.
psi
)
*
sin
(
d
.
theta
)
*
sin
(
d
.
phi
)
+
sin
(
d
.
psi
)
*
cos
(
d
.
phi
);
var
_21
=
cos
(
d
.
psi
)
*
sin
(
d
.
theta
)
*
cos
(
d
.
phi
)
+
sin
(
d
.
psi
)
*
sin
(
d
.
phi
);
var
_22
=
cos
(
d
.
psi
)
*
cos
(
d
.
theta
);
var
_23
=
-
d
.
z
;
var
_30
=
0
;
var
_31
=
0
;
var
_32
=
0
;
var
_33
=
1
;
var
m
=
new
x3dom
.
fields
.
SFMatrix4f
(
_00
,
_01
,
_02
,
_03
,
_10
,
_11
,
_12
,
_13
,
_20
,
_21
,
_22
,
_23
,
_30
,
_31
,
_32
,
_33
);
return
m
;
}
function
mpr_dR_dpsi
(
d
){
var
sin
=
Math
.
sin
;
var
cos
=
Math
.
cos
;
var
_00
=
cos
(
d
.
psi
)
*
sin
(
d
.
theta
)
*
sin
(
d
.
phi
)
-
sin
(
d
.
psi
)
*
cos
(
d
.
phi
);
var
_01
=
-
cos
(
d
.
psi
)
*
sin
(
d
.
theta
)
*
cos
(
d
.
phi
)
-
sin
(
d
.
psi
)
*
sin
(
d
.
phi
);
var
_02
=
-
cos
(
d
.
psi
)
*
cos
(
d
.
theta
);
var
_03
=
0
;
var
_10
=
0
;
var
_11
=
0
;
var
_12
=
0
;
var
_13
=
0
;
var
_20
=
sin
(
d
.
psi
)
*
sin
(
d
.
theta
)
*
sin
(
d
.
phi
)
+
cos
(
d
.
psi
)
*
cos
(
d
.
phi
);
var
_21
=
-
sin
(
d
.
psi
)
*
sin
(
d
.
theta
)
*
cos
(
d
.
phi
)
+
cos
(
d
.
psi
)
*
sin
(
d
.
phi
);
var
_22
=
-
sin
(
d
.
psi
)
*
cos
(
d
.
theta
);
var
_23
=
0
;
var
_30
=
0
;
var
_31
=
0
;
var
_32
=
0
;
var
_33
=
0
;
var
m
=
new
x3dom
.
fields
.
SFMatrix4f
(
_00
,
_01
,
_02
,
_03
,
_10
,
_11
,
_12
,
_13
,
_20
,
_21
,
_22
,
_23
,
_30
,
_31
,
_32
,
_33
);
return
m
;
}
function
mpr_dR_dtheta
(
d
){
var
sin
=
Math
.
sin
;
var
cos
=
Math
.
cos
;
var
_00
=
sin
(
d
.
psi
)
*
cos
(
d
.
theta
)
*
sin
(
d
.
phi
);
var
_01
=
-
sin
(
d
.
psi
)
*
cos
(
d
.
theta
)
*
cos
(
d
.
phi
);
var
_02
=
sin
(
d
.
psi
)
*
sin
(
d
.
theta
);
var
_03
=
0
;
var
_10
=
sin
(
d
.
theta
)
*
sin
(
d
.
phi
);
var
_11
=
-
sin
(
d
.
theta
)
*
cos
(
d
.
phi
);
var
_12
=
-
cos
(
d
.
theta
);
var
_13
=
0
;
var
_20
=
-
cos
(
d
.
psi
)
*
cos
(
d
.
theta
)
*
sin
(
d
.
phi
);
var
_21
=
cos
(
d
.
psi
)
*
cos
(
d
.
theta
)
*
cos
(
d
.
phi
);
var
_22
=
-
cos
(
d
.
psi
)
*
sin
(
d
.
theta
);
var
_23
=
0
;
var
_30
=
0
;
var
_31
=
0
;
var
_32
=
0
;
var
_33
=
0
;
var
m
=
new
x3dom
.
fields
.
SFMatrix4f
(
_00
,
_01
,
_02
,
_03
,
_10
,
_11
,
_12
,
_13
,
_20
,
_21
,
_22
,
_23
,
_30
,
_31
,
_32
,
_33
);
return
m
;
}
function
mpr_dR_dphi
(
d
){
var
sin
=
Math
.
sin
;
var
cos
=
Math
.
cos
;
var
_00
=
sin
(
d
.
psi
)
*
sin
(
d
.
theta
)
*
cos
(
d
.
phi
)
-
cos
(
d
.
psi
)
*
sin
(
d
.
phi
);
var
_01
=
sin
(
d
.
psi
)
*
sin
(
d
.
theta
)
*
sin
(
d
.
phi
)
+
cos
(
d
.
psi
)
*
cos
(
d
.
phi
);
var
_02
=
0
;
var
_03
=
0
;
var
_10
=
-
cos
(
d
.
theta
)
*
cos
(
d
.
phi
);
var
_11
=
-
cos
(
d
.
theta
)
*
sin
(
d
.
phi
);
var
_12
=
0
;
var
_13
=
0
;
var
_20
=
-
cos
(
d
.
psi
)
*
sin
(
d
.
theta
)
*
cos
(
d
.
phi
)
-
sin
(
d
.
psi
)
*
sin
(
d
.
phi
);
var
_21
=
-
cos
(
d
.
psi
)
*
sin
(
d
.
theta
)
*
sin
(
d
.
phi
)
+
sin
(
d
.
psi
)
*
cos
(
d
.
phi
);
var
_22
=
0
;
var
_23
=
0
;
var
_30
=
0
;
var
_31
=
0
;
var
_32
=
0
;
var
_33
=
0
;
var
m
=
new
x3dom
.
fields
.
SFMatrix4f
(
_00
,
_01
,
_02
,
_03
,
_10
,
_11
,
_12
,
_13
,
_20
,
_21
,
_22
,
_23
,
_30
,
_31
,
_32
,
_33
);
return
m
;
}
This diff is collapsed.
Click to expand it.
js/ui_init.js
View file @
583463e8
...
@@ -447,6 +447,8 @@ function deep_init(){
...
@@ -447,6 +447,8 @@ function deep_init(){
if
(
SETTINGS
.
manualposor
){
if
(
SETTINGS
.
manualposor
){
if
(
!
MPR_MARKS_LOADED
)
mpr_marks_load
();
manualposor_shootrays
();
manualposor_shootrays
();
manualposor_rotate_glued
();
manualposor_rotate_glued
();
...
@@ -468,7 +470,7 @@ function deep_init(){
...
@@ -468,7 +470,7 @@ function deep_init(){
x3d_setShiftSpeed
();
x3d_setShiftSpeed
();
if
(
!
MPR_MARKS_LOADED
)
mpr_marks_load
();
//
if (!MPR_MARKS_LOADED) mpr_marks_load();
}
}
// loading extra models?
// loading extra models?
...
...
This diff is collapsed.
Click to expand it.
viewer.html
View file @
583463e8
...
@@ -42,6 +42,7 @@
...
@@ -42,6 +42,7 @@
<script
type=
'text/javascript'
src=
'js/ui_functions.js'
></script>
<script
type=
'text/javascript'
src=
'js/ui_functions.js'
></script>
<script
type=
'text/javascript'
src=
'js/ui_align.js'
></script>
<script
type=
'text/javascript'
src=
'js/ui_align.js'
></script>
<script
type=
'text/javascript'
src=
'js/ui_extra_models.js'
></script>
<script
type=
'text/javascript'
src=
'js/ui_extra_models.js'
></script>
<script
type=
'text/javascript'
src=
'js/ui_extra_models_match.js'
></script>
<script
type=
'text/javascript'
src=
'js/align_functions.js'
></script>
<script
type=
'text/javascript'
src=
'js/align_functions.js'
></script>
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment