- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我修改了 Three.js 库中的示例,并尝试在对象上添加点击事件。
经过多次尝试...我仍然无法监听点击。
此代码生成凸形式。
这是我的代码:
if ( ! Detector.webgl ) Detector.addGetWebGLMessage();
var container, stats;
var camera, scene, renderer;
var objects = [];
init();
animate();
function init() {
container = document.createElement( 'div' );
document.body.appendChild( container );
camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 2000 );
camera.position.y = 400;
scene = new THREE.Scene();
var light, object, object2, materials;
scene.add( new THREE.AmbientLight( 0x404040 ) );
light = new THREE.DirectionalLight( 0xffffff );
light.position.set( 0, 1, 0 );
scene.add( light );
var map = THREE.ImageUtils.loadTexture( 'textures/ash_uvgrid01.jpg' );
map.wrapS = map.wrapT = THREE.RepeatWrapping;
map.anisotropy = 16;
materials = [
new THREE.MeshLambertMaterial( { ambient: 0xbbbbbb, map: map } ),
new THREE.MeshBasicMaterial( { color: 0x242424, wireframe: true, transparent: false, opacity: 0.1 } )
];
// random convex
points = [];
for ( var i = 0; i < 15; i ++ ) {
points.push( randomPointInSphere( 50 ) );
}
object = THREE.SceneUtils.createMultiMaterialObject( new THREE.ConvexGeometry( points ), materials );
object.position.set( -250, 0, 200 );
scene.add( object );
objects.push( object );
object.callback = function() { console.log('blabla');}
renderer = new THREE.WebGLRenderer( { antialias: true } );
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );
stats = new Stats();
stats.domElement.style.position = 'absolute';
stats.domElement.style.top = '0px';
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 );
}
function randomPointInSphere( radius ) {
return new THREE.Vector3(
( Math.random() - 0.5 ) * 1 * radius,
( Math.random() - 0.5 ) * 1 * radius,
( Math.random() - 0.5 ) * 1 * radius
);
}
function animate() {
requestAnimationFrame( animate );
render();
stats.update();
}
function render() {
var timer = Date.now() * 0.0001;
camera.position.x = Math.cos( timer ) * 800;
camera.position.z = Math.sin( timer ) * 800;
camera.lookAt( scene.position );
for ( var i = 0, l = scene.children.length; i < l; i ++ ) {
var object = scene.children[ i ];
object.rotation.x = timer * 5;
object.rotation.y = timer * 2.5;
}
renderer.render( scene, camera );
}
function addMeteor()
{
var map = THREE.ImageUtils.loadTexture( 'textures/ash_uvgrid01.jpg' );
map.wrapS = map.wrapT = THREE.RepeatWrapping;
map.anisotropy = 16;
var materials = [
new THREE.MeshLambertMaterial( { ambient: 0xbbbbbb, map: map } ),
new THREE.MeshBasicMaterial( { color: 0x242424, wireframe: true, transparent: false, opacity: 0.1 } )
];
objects.push( materials );
var object3;
var points3 = [];
for ( var i = 0; i < 10; i ++ ) {
points3.push( randomPointInSphere( 50 ) );
}
object3 = THREE.SceneUtils.createMultiMaterialObject( new THREE.ConvexGeometry( points3 ), materials );
object3.position.set( -50, Math.floor((Math.random()*window.innerWidth)), Math.floor((Math.random()* window.innerHeight)) );
scene.add( object3 );
objects.push( object3 );
}
projector = new THREE.Projector();
// listeners
document.addEventListener( 'mousedown', onDocumentMouseDown, false)
// keyboard handler
function onDocumentMouseDown( event ) {
event.preventDefault();
console.log('blabla');
var vector = new THREE.Vector3(
( event.clientX / window.innerWidth ) * 2 - 1,
- ( event.clientY / window.innerHeight ) * 2 + 1,
0.5 );
projector.unprojectVector( vector, camera );
var ray = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );
console.log(objects);
var intersects = ray.intersectObjects( objects );
console.log(intersects);
if ( intersects.length > 0 ) {
intersects[0].object.callback();
console.log('blabla');
}
}
renderer.render( scene, camera );
我应该将 Mesh 插入 Objects 数组,但是是哪个?
最佳答案
THREE.SceneUtils.createMultiMaterialObject()
创建一个包含两个子网格的对象。
因此,您需要在调用Raycaster.intersectObjects()
时将recursive
标志设置为true
。
var intersects = ray.intersectObjects( objects, true );
three.js r.62
关于javascript - 可点击的三个 Js Objects/Convex Items,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19575800/
我想知道两个 3D 凸包(A vs B)之间碰撞位置的近似 3D 位置和 3D 法线。 括号中的 CPU 显示了我完成的程序所需的相对 CPU 时间。 第 1 部分:提前退出(CPU 1%) 在第一步
我的问题与 Plow's Question 非常相似;但有这个区别: 如何找到适合非凸区域的最大凸区域? 例如,考虑这个非凸区域: 任何想法或解决方案将不胜感激,谢谢。 最佳答案 我写了 an ans
我完全意识到,像线性代数包一样,凸优化包应该是您使用的东西,而不是实现的东西。但是,出于纯粹的教育目的——是否有任何好的资源——关于如何实现凸优化包的链接/书籍? (比如具有二次约束的二次规划?) 谢
所以我正在学习凸包算法,并编写了从朴素的蛮力到格雷厄姆扫描的所有算法。 这是我的 Bruteforce O(n^4) 算法。一开始,假设所有点都是船体的一部分。对于每个可能的三角形,消除位于三角形内的
我该怎么办识别和删除 图像中绘制的那四个红点 这四个点使该多边形成为凹多边形,这就是我想删除它的原因。 我的目标是通过识别和删除这些点来删除这种点,从而将凹多边形转换为凸多边形。 有没有办法识别和删除
我正在使用 CVXPY(版本 1.0)来解决二次程序(QP),我经常遇到这个异常: SolverError: Solver 'xxx' failed. Try another solver. 这使我的
我有一组二维点,我想从中生成一个多边形(或多边形集合)来勾勒出这些点的“形状”,使用以下概念: 对于集合中的每个点,计算该点半径 R 内所有点的凸包。对每个点执行此操作后,将这些凸包合并以生成最终形状
我正在尝试在 CUDA 中并行实现 quickHull 算法(用于凸包)。它适用于 input_size pts.size()) { printf
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
我修改了 Three.js 库中的示例,并尝试在对象上添加点击事件。 经过多次尝试...我仍然无法监听点击。 此代码生成凸形式。 这是我的代码: if ( ! Detector.web
如果我有这样的 QuadCurve (+ = node): + + \ ./ +--⁻⁻ 我用 Java 2D 填充它,结果是这样的:(x = colored) +x
我正在制作一个分析几何的小应用程序。在我的程序的一部分中,我使用了一种算法,该算法具有 将凸对象作为输入。幸运的是,我所有的对象最初都是凸的,但有些勉强如此(见图)。 在我应用一些转换后,我的算法无法
相同的应用程序在 Android 7 中工作,但在 Android 8 中失败。 在一项 Activity 中,我正在从 Fire-base 数据库中检索数据。当 Fire-base 数据库为空时没有
这个学期,我在学校上了计算机图形学类(class),我们的第一个作业是创建凹凸错觉。 这是我应该创建的示例: Concave/Convex Circle Illusion 我试图自己解决这个问题,但我
我在创建复杂的凸包时遇到问题。如果我更改为具有 10 个点左右的简单多边形,效果很好,但是当我在大面积上有 20-30 个点时,它会在多边形中创建“分割”。然而数学表明它应该寻找所有异常值,并将它们用
我正在创建一个 Python 程序,该程序将拍摄图像(一张床的照片),然后运行 Canny 边缘检测,然后运行凸包轮廓检测以找出床的位置。 这是我的图像(请原谅丑陋的 Photoshop 工作)
我需要一些帮助来编写这个 algorithm . 对于一组给定的空间线,我试图在原点(引用点)为 0.5,0.5,0.5 时找到可访问的体积。 .目前,我执行以下操作: 对于每条线,计算到原点的距离
我正在尝试在力布局中的所有组上绘制凸包。但我只画了一半的凸包。当 D3 尝试绘制其余的外壳时,控制台返回错误:尚未创建元素。然而,当我检查控制台中的“组”变量时,所有组数据都在那里,x、y 数据都设置
在下面的代码中,我试图找出一个对象是否为绿色并在其周围绘制轮廓。有了这些信息,我还想找到形状的角并对其进行裁剪,但是我收到了与代码中未使用的 ConvexHull 函数相关的错误。我用过 python
我想使用 Voronoi 图提取边缘点(点位于凸包边界的边缘)。我知道 unbounded 单元格包含一个边界站点点,但我如何使用迭代器访问该信息? 解决方案 VD vd; //initialise
我是一名优秀的程序员,十分优秀!