Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
车家大少爷
three.js
提交
4bacabc7
T
three.js
项目概览
车家大少爷
/
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,发现更多精彩内容 >>
提交
4bacabc7
编写于
4月 06, 2015
作者:
R
Ricardo Cabello
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #6340 from brianpeiris/firefox-webvr-fix
Fix for Firefox WebVR
上级
7cf11ed9
85f0f52b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
68 addition
and
27 deletion
+68
-27
examples/js/controls/VRControls.js
examples/js/controls/VRControls.js
+35
-5
examples/vr_cubes.html
examples/vr_cubes.html
+33
-22
未找到文件。
examples/js/controls/VRControls.js
浏览文件 @
4bacabc7
...
...
@@ -9,13 +9,43 @@ THREE.VRControls = function ( object, onError ) {
var
vrInputs
=
[];
function
filterInvalidDevices
(
devices
)
{
var
OculusDeviceName
=
'
VR Position Device (oculus)
'
,
CardboardDeviceName
=
'
VR Position Device (cardboard)
'
;
// Exclude Cardboard position sensor if Oculus exists.
var
oculusDevices
=
devices
.
filter
(
function
(
device
)
{
return
device
.
deviceName
===
OculusDeviceName
;
}
);
if
(
oculusDevices
.
length
>=
1
)
{
return
devices
.
filter
(
function
(
device
)
{
return
device
.
deviceName
!==
CardboardDeviceName
;
}
);
}
else
{
return
devices
;
}
}
function
gotVRDevices
(
devices
)
{
for
(
var
i
=
0
;
i
<
devices
.
length
;
i
++
)
{
devices
=
filterInvalidDevices
(
devices
);
var
device
=
devices
[
i
];
for
(
var
i
=
0
;
i
<
devices
.
length
;
i
++
)
{
if
(
device
instanceof
PositionSensorVRDevice
)
{
if
(
device
s
[
i
]
instanceof
PositionSensorVRDevice
)
{
vrInputs
.
push
(
devices
[
i
]
);
...
...
@@ -41,7 +71,7 @@ THREE.VRControls = function ( object, onError ) {
this
.
update
=
function
()
{
for
(
var
i
=
0
;
i
<
vrInputs
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
vrInputs
.
length
;
i
++
)
{
var
vrInput
=
vrInputs
[
i
];
...
...
@@ -65,7 +95,7 @@ THREE.VRControls = function ( object, onError ) {
this
.
resetSensor
=
function
()
{
for
(
var
i
=
0
;
i
<
vrInputs
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
vrInputs
.
length
;
i
++
)
{
var
vrInput
=
vrInputs
[
i
];
...
...
examples/vr_cubes.html
浏览文件 @
4bacabc7
...
...
@@ -58,8 +58,9 @@
var
vrEffect
;
var
vrControls
;
var
mouse
=
new
THREE
.
Vector2
(),
INTERSECTED
;
var
INTERSECTED
;
var
radius
=
100
,
theta
=
0
;
var
crosshair
;
init
();
animate
();
...
...
@@ -81,6 +82,16 @@
scene
=
new
THREE
.
Scene
();
crosshair
=
new
THREE
.
Mesh
(
new
THREE
.
RingGeometry
(
0.5
,
1
,
32
),
new
THREE
.
MeshBasicMaterial
(
{
color
:
0x00bb00
,
transparent
:
true
,
opacity
:
0.5
}
)
);
scene
.
add
(
crosshair
);
var
light
=
new
THREE
.
DirectionalLight
(
0xffffff
,
1
);
light
.
position
.
set
(
1
,
1
,
1
).
normalize
();
scene
.
add
(
light
);
...
...
@@ -130,7 +141,9 @@
}
);
fullScreenButton
.
onclick
=
function
()
{
vrEffect
.
setFullScreen
(
true
);
};
renderer
.
setClearColor
(
0xf0f0f0
);
...
...
@@ -143,8 +156,6 @@
stats
.
domElement
.
style
.
top
=
'
0px
'
;
container
.
appendChild
(
stats
.
domElement
);
document
.
addEventListener
(
'
mousemove
'
,
onDocumentMouseMove
,
false
);
//
window
.
addEventListener
(
'
resize
'
,
onWindowResize
,
false
);
...
...
@@ -160,15 +171,6 @@
}
function
onDocumentMouseMove
(
event
)
{
event
.
preventDefault
();
mouse
.
x
=
(
event
.
clientX
/
window
.
innerWidth
)
*
2
-
1
;
mouse
.
y
=
-
(
event
.
clientY
/
window
.
innerHeight
)
*
2
+
1
;
}
//
function
animate
()
{
...
...
@@ -182,18 +184,9 @@
function
render
()
{
theta
+=
0.1
;
camera
.
position
.
x
=
radius
*
Math
.
sin
(
THREE
.
Math
.
degToRad
(
theta
)
);
camera
.
position
.
y
=
radius
*
Math
.
sin
(
THREE
.
Math
.
degToRad
(
theta
)
);
camera
.
position
.
z
=
radius
*
Math
.
cos
(
THREE
.
Math
.
degToRad
(
theta
)
);
camera
.
lookAt
(
scene
.
position
);
camera
.
updateMatrixWorld
();
// find intersections
raycaster
.
setFromCamera
(
mouse
,
camera
);
raycaster
.
setFromCamera
(
{
x
:
0
,
y
:
0
}
,
camera
);
var
intersects
=
raycaster
.
intersectObjects
(
scene
.
children
);
...
...
@@ -218,6 +211,24 @@
}
vrControls
.
update
();
crosshair
.
quaternion
.
copy
(
camera
.
quaternion
);
crosshair
.
position
.
set
(
0
,
0
,
0
);
if
(
INTERSECTED
)
{
crosshair
.
translateZ
(
-
scene
.
position
.
distanceTo
(
INTERSECTED
.
position
)
+
INTERSECTED
.
geometry
.
boundingSphere
.
radius
+
5
);
}
else
{
crosshair
.
translateZ
(
-
40
);
}
vrEffect
.
render
(
scene
,
camera
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录