Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
bff1076e
T
three.js
项目概览
Ablesons
/
three.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
three.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
bff1076e
编写于
4月 10, 2020
作者:
M
Mugen87
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
WebXRManager: Introduce WebXRController.
上级
d52b0925
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
164 addition
and
113 deletion
+164
-113
src/renderers/webxr/WebXRController.d.ts
src/renderers/webxr/WebXRController.d.ts
+13
-0
src/renderers/webxr/WebXRController.js
src/renderers/webxr/WebXRController.js
+141
-0
src/renderers/webxr/WebXRManager.js
src/renderers/webxr/WebXRManager.js
+10
-113
未找到文件。
src/renderers/webxr/WebXRController.d.ts
0 → 100644
浏览文件 @
bff1076e
import
{
Group
}
from
'
../../objects/Group
'
;
export
class
WebXRController
{
constructor
();
getTargetRaySpace
():
Group
;
getGripSpace
():
Group
;
dispatchEvent
(
event
:
object
):
this
;
disconnect
(
inputSource
:
object
):
this
;
update
(
inputSource
:
object
,
frame
:
object
,
referenceSpace
:
string
):
this
;
}
src/renderers/webxr/WebXRController.js
0 → 100644
浏览文件 @
bff1076e
import
{
Group
}
from
'
../../objects/Group.js
'
;
/**
* @author Mugen87 / https://github.com/Mugen87
*/
function
WebXRController
()
{
this
.
_targetRay
=
null
;
this
.
_grip
=
null
;
}
Object
.
assign
(
WebXRController
.
prototype
,
{
constructor
:
WebXRController
,
getTargetRaySpace
:
function
()
{
if
(
this
.
_targetRay
===
null
)
{
this
.
_targetRay
=
new
Group
();
this
.
_targetRay
.
matrixAutoUpdate
=
false
;
this
.
_targetRay
.
visible
=
false
;
}
return
this
.
_targetRay
;
},
getGripSpace
:
function
()
{
if
(
this
.
_grip
===
null
)
{
this
.
_grip
=
new
Group
();
this
.
_grip
.
matrixAutoUpdate
=
false
;
this
.
_grip
.
visible
=
false
;
}
return
this
.
_grip
;
},
dispatchEvent
:
function
(
event
)
{
if
(
this
.
_targetRay
!==
null
)
{
this
.
_targetRay
.
dispatchEvent
(
event
);
}
if
(
this
.
_grip
!==
null
)
{
this
.
_grip
.
dispatchEvent
(
event
);
}
return
this
;
},
disconnect
:
function
(
inputSource
)
{
this
.
dispatchEvent
(
{
type
:
'
disconnected
'
,
data
:
inputSource
}
);
if
(
this
.
_targetRay
!==
null
)
{
this
.
_targetRay
.
visible
=
false
;
}
if
(
this
.
_grip
!==
null
)
{
this
.
_grip
.
visible
=
false
;
}
return
this
;
},
update
:
function
(
inputSource
,
frame
,
referenceSpace
)
{
var
inputPose
=
null
;
var
gripPose
=
null
;
var
targetRay
=
this
.
_targetRay
;
var
grip
=
this
.
_grip
;
if
(
inputSource
)
{
if
(
targetRay
!==
null
)
{
inputPose
=
frame
.
getPose
(
inputSource
.
targetRaySpace
,
referenceSpace
);
if
(
inputPose
!==
null
)
{
targetRay
.
matrix
.
fromArray
(
inputPose
.
transform
.
matrix
);
targetRay
.
matrix
.
decompose
(
targetRay
.
position
,
targetRay
.
rotation
,
targetRay
.
scale
);
}
}
if
(
grip
!==
null
&&
inputSource
.
gripSpace
)
{
gripPose
=
frame
.
getPose
(
inputSource
.
gripSpace
,
referenceSpace
);
if
(
gripPose
!==
null
)
{
grip
.
matrix
.
fromArray
(
gripPose
.
transform
.
matrix
);
grip
.
matrix
.
decompose
(
grip
.
position
,
grip
.
rotation
,
grip
.
scale
);
}
}
}
if
(
targetRay
!==
null
)
{
targetRay
.
visible
=
(
inputPose
!==
null
);
}
if
(
grip
!==
null
)
{
grip
.
visible
=
(
gripPose
!==
null
);
}
return
this
;
}
}
);
export
{
WebXRController
};
src/renderers/webxr/WebXRManager.js
浏览文件 @
bff1076e
...
@@ -4,11 +4,11 @@
...
@@ -4,11 +4,11 @@
import
{
ArrayCamera
}
from
'
../../cameras/ArrayCamera.js
'
;
import
{
ArrayCamera
}
from
'
../../cameras/ArrayCamera.js
'
;
import
{
EventDispatcher
}
from
'
../../core/EventDispatcher.js
'
;
import
{
EventDispatcher
}
from
'
../../core/EventDispatcher.js
'
;
import
{
Group
}
from
'
../../objects/Group.js
'
;
import
{
PerspectiveCamera
}
from
'
../../cameras/PerspectiveCamera.js
'
;
import
{
PerspectiveCamera
}
from
'
../../cameras/PerspectiveCamera.js
'
;
import
{
Vector3
}
from
'
../../math/Vector3.js
'
;
import
{
Vector3
}
from
'
../../math/Vector3.js
'
;
import
{
Vector4
}
from
'
../../math/Vector4.js
'
;
import
{
Vector4
}
from
'
../../math/Vector4.js
'
;
import
{
WebGLAnimation
}
from
'
../webgl/WebGLAnimation.js
'
;
import
{
WebGLAnimation
}
from
'
../webgl/WebGLAnimation.js
'
;
import
{
WebXRController
}
from
'
./WebXRController.js
'
;
function
WebXRManager
(
renderer
,
gl
)
{
function
WebXRManager
(
renderer
,
gl
)
{
...
@@ -55,20 +55,12 @@ function WebXRManager( renderer, gl ) {
...
@@ -55,20 +55,12 @@ function WebXRManager( renderer, gl ) {
if
(
controller
===
undefined
)
{
if
(
controller
===
undefined
)
{
controller
=
{}
;
controller
=
new
WebXRController
()
;
controllers
[
id
]
=
controller
;
controllers
[
id
]
=
controller
;
}
}
if
(
controller
.
targetRay
===
undefined
)
{
return
controller
.
getTargetRaySpace
();
controller
.
targetRay
=
new
Group
();
controller
.
targetRay
.
matrixAutoUpdate
=
false
;
controller
.
targetRay
.
visible
=
false
;
}
return
controller
.
targetRay
;
};
};
...
@@ -78,20 +70,12 @@ function WebXRManager( renderer, gl ) {
...
@@ -78,20 +70,12 @@ function WebXRManager( renderer, gl ) {
if
(
controller
===
undefined
)
{
if
(
controller
===
undefined
)
{
controller
=
{}
;
controller
=
new
WebXRController
()
;
controllers
[
id
]
=
controller
;
controllers
[
id
]
=
controller
;
}
}
if
(
controller
.
grip
===
undefined
)
{
return
controller
.
getGripSpace
();
controller
.
grip
=
new
Group
();
controller
.
grip
.
matrixAutoUpdate
=
false
;
controller
.
grip
.
visible
=
false
;
}
return
controller
.
grip
;
};
};
...
@@ -103,17 +87,7 @@ function WebXRManager( renderer, gl ) {
...
@@ -103,17 +87,7 @@ function WebXRManager( renderer, gl ) {
if
(
controller
)
{
if
(
controller
)
{
if
(
controller
.
targetRay
)
{
controller
.
dispatchEvent
(
{
type
:
event
.
type
}
);
controller
.
targetRay
.
dispatchEvent
(
{
type
:
event
.
type
}
);
}
if
(
controller
.
grip
)
{
controller
.
grip
.
dispatchEvent
(
{
type
:
event
.
type
}
);
}
}
}
...
@@ -123,19 +97,7 @@ function WebXRManager( renderer, gl ) {
...
@@ -123,19 +97,7 @@ function WebXRManager( renderer, gl ) {
inputSourcesMap
.
forEach
(
function
(
controller
,
inputSource
)
{
inputSourcesMap
.
forEach
(
function
(
controller
,
inputSource
)
{
if
(
controller
.
targetRay
)
{
controller
.
disconnect
(
inputSource
);
controller
.
targetRay
.
dispatchEvent
(
{
type
:
'
disconnected
'
,
data
:
inputSource
}
);
controller
.
targetRay
.
visible
=
false
;
}
if
(
controller
.
grip
)
{
controller
.
grip
.
dispatchEvent
(
{
type
:
'
disconnected
'
,
data
:
inputSource
}
);
controller
.
grip
.
visible
=
false
;
}
}
);
}
);
...
@@ -257,18 +219,7 @@ function WebXRManager( renderer, gl ) {
...
@@ -257,18 +219,7 @@ function WebXRManager( renderer, gl ) {
if
(
controller
)
{
if
(
controller
)
{
if
(
controller
.
targetRay
)
{
controller
.
dispatchEvent
(
{
type
:
'
disconnected
'
,
data
:
inputSource
}
);
controller
.
targetRay
.
dispatchEvent
(
{
type
:
'
disconnected
'
,
data
:
inputSource
}
);
}
if
(
controller
.
grip
)
{
controller
.
grip
.
dispatchEvent
(
{
type
:
'
disconnected
'
,
data
:
inputSource
}
);
}
inputSourcesMap
.
delete
(
inputSource
);
inputSourcesMap
.
delete
(
inputSource
);
}
}
...
@@ -284,17 +235,7 @@ function WebXRManager( renderer, gl ) {
...
@@ -284,17 +235,7 @@ function WebXRManager( renderer, gl ) {
if
(
controller
)
{
if
(
controller
)
{
if
(
controller
.
targetRay
)
{
controller
.
dispatchEvent
(
{
type
:
'
connected
'
,
data
:
inputSource
}
);
controller
.
targetRay
.
dispatchEvent
(
{
type
:
'
connected
'
,
data
:
inputSource
}
);
}
if
(
controller
.
grip
)
{
controller
.
grip
.
dispatchEvent
(
{
type
:
'
connected
'
,
data
:
inputSource
}
);
}
}
}
...
@@ -470,53 +411,9 @@ function WebXRManager( renderer, gl ) {
...
@@ -470,53 +411,9 @@ function WebXRManager( renderer, gl ) {
for
(
var
i
=
0
;
i
<
controllers
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
controllers
.
length
;
i
++
)
{
var
controller
=
controllers
[
i
];
var
controller
=
controllers
[
i
];
var
inputSource
=
inputSources
[
i
];
var
inputSource
=
inputSources
[
i
];
var
inputPose
=
null
;
controller
.
update
(
inputSource
,
frame
,
referenceSpace
);
var
gripPose
=
null
;
if
(
inputSource
)
{
if
(
controller
.
targetRay
)
{
inputPose
=
frame
.
getPose
(
inputSource
.
targetRaySpace
,
referenceSpace
);
if
(
inputPose
!==
null
)
{
controller
.
targetRay
.
matrix
.
fromArray
(
inputPose
.
transform
.
matrix
);
controller
.
targetRay
.
matrix
.
decompose
(
controller
.
targetRay
.
position
,
controller
.
targetRay
.
rotation
,
controller
.
targetRay
.
scale
);
}
}
if
(
controller
.
grip
&&
inputSource
.
gripSpace
)
{
gripPose
=
frame
.
getPose
(
inputSource
.
gripSpace
,
referenceSpace
);
if
(
gripPose
!==
null
)
{
controller
.
grip
.
matrix
.
fromArray
(
gripPose
.
transform
.
matrix
);
controller
.
grip
.
matrix
.
decompose
(
controller
.
grip
.
position
,
controller
.
grip
.
rotation
,
controller
.
grip
.
scale
);
}
}
}
if
(
controller
.
targetRay
)
{
controller
.
targetRay
.
visible
=
inputPose
!==
null
;
}
if
(
controller
.
grip
)
{
controller
.
grip
.
visible
=
gripPose
!==
null
;
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录