Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
93f0618d
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,发现更多精彩内容 >>
提交
93f0618d
编写于
6月 22, 2018
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Updated builds.
上级
62a05e49
变更
3
展开全部
隐藏空白更改
内联
并排
Showing
3 changed file
with
726 addition
and
502 deletion
+726
-502
build/three.js
build/three.js
+121
-10
build/three.min.js
build/three.min.js
+484
-482
build/three.module.js
build/three.module.js
+121
-10
未找到文件。
build/three.js
浏览文件 @
93f0618d
...
...
@@ -21417,6 +21417,7 @@
var poseTarget = null;
var controllers = [];
var standingMatrix = new Matrix4();
var standingMatrixInverse = new Matrix4();
...
...
@@ -21480,13 +21481,108 @@
//
var isTriggerPressed = false;
function findGamepad( id ) {
var gamepads = navigator.getGamepads && navigator.getGamepads();
for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) {
var gamepad = gamepads[ i ];
if ( gamepad && ( gamepad.id === 'Daydream Controller' ||
gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' ||
gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) ||
gamepad.id.startsWith( 'Spatial Controller' ) ) ) {
if ( j === id ) return gamepad;
j ++;
}
}
}
function updateControllers() {
for ( var i = 0; i < controllers.length; i ++ ) {
var controller = controllers[ i ];
var gamepad = findGamepad( i );
if ( gamepad !== undefined && gamepad.pose !== undefined ) {
if ( gamepad.pose === null ) return;
// Pose
var pose = gamepad.pose;
if ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 );
if ( pose.position !== null ) controller.position.fromArray( pose.position );
if ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation );
controller.matrix.compose( controller.position, controller.quaternion, controller.scale );
controller.matrix.premultiply( standingMatrix );
controller.matrix.decompose( controller.position, controller.quaternion, controller.scale );
controller.matrixWorldNeedsUpdate = true;
controller.visible = true;
// Trigger
var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;
if ( isTriggerPressed !== gamepad.buttons[ buttonId ].pressed ) {
isTriggerPressed = gamepad.buttons[ buttonId ].pressed;
if ( isTriggerPressed ) {
controller.dispatchEvent( { type: 'selectstart' } );
} else {
controller.dispatchEvent( { type: 'selectend' } );
controller.dispatchEvent( { type: 'select' } );
}
}
} else {
controller.visible = false;
}
}
}
//
this.enabled = false;
this.userHeight = 1.6;
this.getController = function ( id ) {
console.warn( 'WebVRManager: getController() not yet implemented.' );
return new Group();
var controller = controllers[ id ];
if ( controller === undefined ) {
controller = new Group();
controller.matrixAutoUpdate = false;
controller.visible = false;
controllers[ id ] = controller;
}
return controller;
};
...
...
@@ -21628,6 +21724,8 @@
}
updateControllers();
return cameraVR;
};
...
...
@@ -21680,10 +21778,11 @@
var session = null;
var frameOfRef = null;
var inputSources = [];
var pose = null;
var controllers = {};
var controllers = [];
var inputSources = [];
function isPresenting() {
...
...
@@ -21718,6 +21817,7 @@
controller = new Group();
controller.matrixAutoUpdate = false;
controller.visible = false;
controllers[ id ] = controller;
...
...
@@ -21891,19 +21991,30 @@
//
for ( var i = 0; i < inputSources.length; i ++ ) {
for ( var i = 0; i < controllers.length; i ++ ) {
var controller = controllers[ i ];
var inputSource = inputSources[ i ];
var inputPose = frame.getInputPose( inputSource, frameOfRef );
if ( inputPose !== null && controllers[ i ] ) {
if ( inputSource ) {
var inputPose = frame.getInputPose( inputSource, frameOfRef );
var controller = controllers[ i ];
controller.matrix.elements = inputPose.gripMatrix;
controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
if ( inputPose !== null ) {
controller.matrix.elements = inputPose.gripMatrix;
controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
controller.visible = true;
continue;
}
}
controller.visible = false;
}
if ( onAnimationFrameCallback ) onAnimationFrameCallback( time );
build/three.min.js
浏览文件 @
93f0618d
此差异已折叠。
点击以展开。
build/three.module.js
浏览文件 @
93f0618d
...
...
@@ -21411,6 +21411,7 @@ function WebVRManager( renderer ) {
var poseTarget = null;
var controllers = [];
var standingMatrix = new Matrix4();
var standingMatrixInverse = new Matrix4();
...
...
@@ -21474,13 +21475,108 @@ function WebVRManager( renderer ) {
//
var isTriggerPressed = false;
function findGamepad( id ) {
var gamepads = navigator.getGamepads && navigator.getGamepads();
for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) {
var gamepad = gamepads[ i ];
if ( gamepad && ( gamepad.id === 'Daydream Controller' ||
gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' ||
gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) ||
gamepad.id.startsWith( 'Spatial Controller' ) ) ) {
if ( j === id ) return gamepad;
j ++;
}
}
}
function updateControllers() {
for ( var i = 0; i < controllers.length; i ++ ) {
var controller = controllers[ i ];
var gamepad = findGamepad( i );
if ( gamepad !== undefined && gamepad.pose !== undefined ) {
if ( gamepad.pose === null ) return;
// Pose
var pose = gamepad.pose;
if ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 );
if ( pose.position !== null ) controller.position.fromArray( pose.position );
if ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation );
controller.matrix.compose( controller.position, controller.quaternion, controller.scale );
controller.matrix.premultiply( standingMatrix );
controller.matrix.decompose( controller.position, controller.quaternion, controller.scale );
controller.matrixWorldNeedsUpdate = true;
controller.visible = true;
// Trigger
var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;
if ( isTriggerPressed !== gamepad.buttons[ buttonId ].pressed ) {
isTriggerPressed = gamepad.buttons[ buttonId ].pressed;
if ( isTriggerPressed ) {
controller.dispatchEvent( { type: 'selectstart' } );
} else {
controller.dispatchEvent( { type: 'selectend' } );
controller.dispatchEvent( { type: 'select' } );
}
}
} else {
controller.visible = false;
}
}
}
//
this.enabled = false;
this.userHeight = 1.6;
this.getController = function ( id ) {
console.warn( 'WebVRManager: getController() not yet implemented.' );
return new Group();
var controller = controllers[ id ];
if ( controller === undefined ) {
controller = new Group();
controller.matrixAutoUpdate = false;
controller.visible = false;
controllers[ id ] = controller;
}
return controller;
};
...
...
@@ -21622,6 +21718,8 @@ function WebVRManager( renderer ) {
}
updateControllers();
return cameraVR;
};
...
...
@@ -21674,10 +21772,11 @@ function WebXRManager( renderer ) {
var session = null;
var frameOfRef = null;
var inputSources = [];
var pose = null;
var controllers = {};
var controllers = [];
var inputSources = [];
function isPresenting() {
...
...
@@ -21712,6 +21811,7 @@ function WebXRManager( renderer ) {
controller = new Group();
controller.matrixAutoUpdate = false;
controller.visible = false;
controllers[ id ] = controller;
...
...
@@ -21885,19 +21985,30 @@ function WebXRManager( renderer ) {
//
for ( var i = 0; i < inputSources.length; i ++ ) {
for ( var i = 0; i < controllers.length; i ++ ) {
var controller = controllers[ i ];
var inputSource = inputSources[ i ];
var inputPose = frame.getInputPose( inputSource, frameOfRef );
if ( inputPose !== null && controllers[ i ] ) {
if ( inputSource ) {
var inputPose = frame.getInputPose( inputSource, frameOfRef );
var controller = controllers[ i ];
controller.matrix.elements = inputPose.gripMatrix;
controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
if ( inputPose !== null ) {
controller.matrix.elements = inputPose.gripMatrix;
controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
controller.visible = true;
continue;
}
}
controller.visible = false;
}
if ( onAnimationFrameCallback ) onAnimationFrameCallback( time );
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录