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
Oct 10, 2017
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
Show 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
;
}
}
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
"
);
...
...
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
;
}
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?
...
...
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>
...
...
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