- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 misc_controls_orbit 示例嵌入到包含其他内容的较大网页中的 800x600 框架中。
我的问题是当我滚动我的鼠标滚轮时,即使我的鼠标在框架内或框架外,它也会滚动网页和缩放我的对象。
我现在需要的是当我的鼠标在框架内时,它只会缩放对象,而不是用它滚动所有网页,当鼠标在框架外时,它只会滚动网页,而不是缩放对象(比如Sketchfab 嵌入此处:http://www.klaasnienhuis.nl/2012/09/sketchfab-embeds/ )
这个问题似乎只发生在 OrbitControls 上,Trackball 不会,我搜索并尝试了很多方法但仍然没有结果,有人可以帮助我吗? (我的英语不好,希望你能理解,如果你不理解请问)
这是我正在使用的原始 misc_controls_orbit 代码:
<!DOCTYPE html>
<html lang="en">
<head>
<title>three.js webgl - orbit controls</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<style>
body {
color: #000;
font-family:Monospace;
font-size:13px;
text-align:center;
font-weight: bold;
background-color: #fff;
margin: 0px;
overflow: hidden;
}
#info {
color:#000;
position: absolute;
top: 0px; width: 100%;
padding: 5px;
}
a {
color: red;
}
</style>
</head>
<body>
<div id="container"></div>
<div id="info">
<a href="http://threejs.org" target="_blank">three.js</a> - orbit controls example
</div>
<script src="../build/three.min.js"></script>
<script src="js/controls/OrbitControls.js"></script>
<script src="js/Detector.js"></script>
<script src="js/libs/stats.min.js"></script>
<script>
if ( ! Detector.webgl ) Detector.addGetWebGLMessage();
var container, stats;
var camera, controls, scene, renderer;
var cross;
init();
animate();
function init() {
camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 1000 );
camera.position.z = 500;
controls = new THREE.OrbitControls( camera );
controls.addEventListener( 'change', render );
scene = new THREE.Scene();
scene.fog = new THREE.FogExp2( 0xcccccc, 0.002 );
// world
var geometry = new THREE.CylinderGeometry( 0, 10, 30, 4, 1 );
var material = new THREE.MeshLambertMaterial( { color:0xffffff, shading: THREE.FlatShading } );
for ( var i = 0; i < 500; i ++ ) {
var mesh = new THREE.Mesh( geometry, material );
mesh.position.x = ( Math.random() - 0.5 ) * 1000;
mesh.position.y = ( Math.random() - 0.5 ) * 1000;
mesh.position.z = ( Math.random() - 0.5 ) * 1000;
mesh.updateMatrix();
mesh.matrixAutoUpdate = false;
scene.add( mesh );
}
// lights
light = new THREE.DirectionalLight( 0xffffff );
light.position.set( 1, 1, 1 );
scene.add( light );
light = new THREE.DirectionalLight( 0x002288 );
light.position.set( -1, -1, -1 );
scene.add( light );
light = new THREE.AmbientLight( 0x222222 );
scene.add( light );
// renderer
renderer = new THREE.WebGLRenderer( { antialias: false } );
renderer.setClearColor( scene.fog.color, 1 );
renderer.setSize( window.innerWidth, window.innerHeight );
container = document.getElementById( 'container' );
container.appendChild( renderer.domElement );
stats = new Stats();
stats.domElement.style.position = 'absolute';
stats.domElement.style.top = '0px';
stats.domElement.style.zIndex = 100;
container.appendChild( stats.domElement );
//
window.addEventListener( 'resize', onWindowResize, false );
}
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize( window.innerWidth, window.innerHeight );
render();
}
function animate() {
requestAnimationFrame( animate );
controls.update();
}
function render() {
renderer.render( scene, camera );
stats.update();
}
</script>
</body>
最佳答案
使用canvas渲染webgl并添加事件监听器
使用这个 html:
<canvas id="webglcanvas" width="800" height="600"></canvas>
用这个javascript
function onMouseWheel(evt) {
evt.preventDefault();
/* TODO : your zoom */
}
function addMouseHandler(canvas) {
canvas.addEventListener('mousemove', onMouseMove, false);
canvas.addEventListener('mousedown', onMouseDown, false);
canvas.addEventListener('mouseup', onMouseUp, false);
canvas.addEventListener('onwheel' in document ? 'wheel' : 'mousewheel', onMouseWheel, false);
}
function createScene(canvas) {
renderer = new THREE.WebGLRenderer({
canvas: canvas,
antialias: true
});
// Set the viewport size
renderer.setSize(canvas.width, canvas.height);
}
$(document).ready(function () {
var canvas = document.getElementById("webglcanvas");
// create the scene
createScene(canvas);
// add mouse handling so we can rotate the scene
addMouseHandler(canvas);
// Run the run loop
run();
});
关于javascript - 放大较大的网页时出现 OrbitControls 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19760943/
当我去创建一个 OrbitControls 的实例时,我最终得到了 未捕获的类型错误:THREE.OrbitControls 不是构造函数。 我的代码非常简单,但我显然遗漏了一些东西。 var or
有什么方法可以限制场景中摄像机的平移运动吗? 尝试在 orbitControls 中更改 pan 方法,但我对结果并不满意,我希望有更方便/正确的方法来做到这一点.. if ( scope.objec
我正在使用 THREE.js 和 Blender 开展一个学术项目。在我的 main.js 中,我有用于创建场景、创建渲染器、相机、轨道控件等的代码...问题是,每次我加载网页时,相机都会看着某个位置
我已经尝试创建一个 WebVR 环境一个多星期了,我的场景是用三个 js 渲染的,但我似乎无法使 VR 控件工作。 我已经尝试过: 在我的node_modules中添加包并导入它们: import t
有没有办法、插件或想法让 THREE.js OrbitControls 在旋转时产生惯性效果? 我想像这样旋转一个具有一定阻尼的世界球体: http://stemkoski.github.io/Thr
在three.js中如何设置摄像机轨道的中心? (使用OrbitControls) 鸡蛋:我要用 camera.lookAt(new THREE.Vector3( 100,50,200 ) 并让我的相
如何在鼠标交互时停止 OrbitControls 的自动旋转,并在几秒钟后像 P3D.in 一样开始使用他们的 Logo (http://p3d.in/) 最佳答案 对于谷歌搜索的人,如果你想在第一次
我想知道我是否仍然可以在 2020 年使用 OrbitControls? 这是我得到的警告: 作为向 ES6 模块过渡的一部分,“examples/js”中的文件已于 2020 年 5 月 (r117
我需要旋转环境。而且由于three.js 不支持立方体环境旋转,我将采用最简单的方法并修改scene.rotation.y ,正如三个.js 贡献者所建议的那样。 在相机平移之前,一切正常。在这里亲自
刚刚开始学习 THREE.js,我用基本的东西做了一个简单的场景: http://codepen.io/inspiral/full/Lewgj 一切工作正常,除了最近插入的鼠标事件处理对渲染产生的奇怪
我尝试将最新的 OrbitControls.js 添加到我的场景和轨道接缝中以正常工作。但是,当我使用鼠标中键或滚轮进行缩放时,轴接缝会关闭并且不再正确旋转。平移(或扫射)在我的场景中似乎也无法正常工
我不明白这是否是一个纯粹的 JavaScript 错误。在下面的类函数中,我添加了一个事件监听器,它返回此错误: Uncaught TypeError: Cannot read property 'c
我试图在我的 three.js 项目中添加 OrbitControls,但是当我尝试调用构造函数时,它给出了一个未捕获的类型错误“THREE.OrbitControls 不是构造函数”。我已经搜索了一
我将 misc_controls_orbit 示例嵌入到包含其他内容的较大网页中的 800x600 框架中。 我的问题是当我滚动我的鼠标滚轮时,即使我的鼠标在框架内或框架外,它也会滚动网页和缩放我的对
我是一名老 COBOL 程序员,为了一个小的个人项目自学了一些 Javascript 和 Three.js,现在我被这个疑问困扰了将近两天。我已经在 StackOverflow 中阅读了所有关于 Or
我使用 OrbitControls.js 允许用户放大/缩小和旋转我网站上显示的 3D 模型。但是,当我单击页面上的任意位置时,模型会消失,并且用于在模型之间切换的两个按钮不再起作用。事先,它允许我放
我已经使用 OrbitControls.js 在 Three.js 中设置了一个场景,以允许旋转和平移。我希望我的照明设置跟随相机,确保场景中的物体始终被照亮。 (现在您可以旋转到物体的“暗面”)。
我将通过图像解释我的问题: 这是顶部相机的 View ,灰色立方体是3D模型,“X”表示“旋转中心”,箭头表示旋转方向: 通常,当我们平移时,“旋转中心”仍然位于相机的中心,因此旋转方向如下所示: 问
我希望它继续围绕物体旋转。但我无法设置 minPolarAngle/maxPolarAngle(当我将其设置为(+-)无限旋转时不起作用)。 OrbitControls 中的最小和最大极 Angula
如何限制 OrbitControl 的水平旋转? 在代码中,我可以看到可以使用 minPolarAngle 和 maxPolarAngle 来垂直限制它。但是我找不到横向限制它的方法。 -- 编辑:我
我是一名优秀的程序员,十分优秀!