当我点击它们时如何更改圆半径(使用 Three.js)?

2024-02-15

我有以下 JavaScript 代码,取自一个示例,它绘制了一些圆圈,当您单击其中一个圆圈时,它会改变颜色。但我还想在单击该圆圈时更改该圆圈的半径/大小(并保持其他圆圈不变)。这文档 https://threejs.org/docs/index.html#api/geometries/CircleGeometry根本没有帮助,我已经尝试了代码中的几种变体,例如

intersects[ 0 ].object.geometry.parameters.radius = 50;
intersects[ 0 ].object.geometry.radius = 50;
intersects[ 0 ].object.geometry.setRadius(50);

无论如何,这是完整的代码:

var container, camera, scene, geometry, mesh, renderer, controls, particles, colors;
var objects = [];

// DOM element...
container = document.createElement('div');
document.body.appendChild(container);

// Camera...
camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000);
camera.position.set(0, 0, 75);

// Scene...
scene = new THREE.Scene();
scene.add(camera);

// Renderer...
renderer = new THREE.WebGLRenderer({
    clearAlpha: 1
});
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0xffffff, 1);
document.body.appendChild(renderer.domElement);         

// Scatter plot...
scatterPlot = new THREE.Object3D();
scene.add(scatterPlot);

// Make grid...
xzColor = 'black';
xyColor = 'black';
yzColor = 'black';



// Plot some random points...
circle = new THREE.CircleGeometry(5);

colors = [];
var max = 50;
var min = -50;

for (var i = 0; i < 10; i++) {          

    var object = new THREE.Mesh( circle, new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff, opacity: 0.5 } ) );
    object.position.x = Math.random() * (max - min) + min;
    object.position.y = Math.random() * (max - min) + min;
    object.position.z = 0;                  

    scene.add( object );
    objects.push( object );

}

animate();

function animate() {
    requestAnimationFrame(animate);
    renderer.render(scene, camera);
}

raycaster = new THREE.Raycaster();
mouse = new THREE.Vector2();
document.addEventListener( 'mousedown', onDocumentMouseDown, false );

function onDocumentMouseDown( event ) {
    event.preventDefault();
    mouse.x = ( event.clientX / renderer.domElement.clientWidth ) * 2 - 1;
    mouse.y = - ( event.clientY / renderer.domElement.clientHeight ) * 2 + 1;
    raycaster.setFromCamera( mouse, camera );
    var intersects = raycaster.intersectObjects( objects );
    if ( intersects.length > 0 ) {
        intersects[ 0 ].object.material.color.setHex( Math.random() * 0xffffff );
        intersects[ 0 ].object.geometry.setRadius(50);
        var particle = new THREE.Sprite( particleMaterial );
        particle.position.copy( intersects[ 0 ].point );
        particle.scale.x = particle.scale.y = 16;
        scene.add( particle );
    }
}

知道我该如何解决这个问题吗?我在哪里可以找到正确的文档?

附录:

  • 我使用了以下代码行:

    相交[ 0 ].object.geometry.scale(1.1,1.1,1.1);

在代码中,现在圆圈改变了它们的大小。但他们所有人!我单击一个圆圈,每个圆圈都会改变大小。对我来说没有意义......


不要扩大你的规模geometry。您对所有圆使用相同的几何参考,因此缩放一个圆会缩放所有圆。

相反,扩大你的Mesh,它是场景中的唯一对象(即使它引用与其他网格相同的几何体)。很像你的设置方式position对于每个Mesh,您还可以访问scale:

intersects[0].object.scale.set(1.1, 1.1, 1.1);

这将缩放相交的Mesh对象,仅此而已Mesh.

克隆并创建新的Mesh实际上是引入了内存泄漏。原本的Mesh除非你把它从场景中移除,否则它不会消失,而且你会不断制作越来越多的东西Geometry物体如你clone the circle.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我点击它们时如何更改圆半径(使用 Three.js)? 的相关文章

  • 解决错误 413 请求实体太大

    我正在从事的项目允许我们的员工将大文件上传到我们的共享主机并获取下载链接 问题是我们的托管拒绝更改共享托管的 LimitRequestBody 还有其他解决方案可以解决 LimitRequestBody 或任何其他方法来完成这项工作吗 有两
  • 是否有匹配单个字素簇的正则表达式?

    字素是用户感知的文本字符 在 unicode 中可能由多个代码点组成 From Unicode 标准附录 29 http unicode org reports tr29 Grapheme Cluster Boundaries 重要的是要认
  • 使用 AppleScript 单击 safari 网页按钮

    我想弄清楚如何单击网页中的按钮 例如 点击谷歌网页中的 手气不错 按钮 这是我尝试过的 tell application Safari make new document with properties URL https www goog
  • 录制视频和音频并上传到服务器

    我想为网站添加视频录制功能 我一直在搜索并尝试所有可能的可用解决方案 但还没有任何工作正常 我已经尝试过以下解决方案 WebRTC 我知道使用 WebRTC 我们可以从网络摄像头和麦克风获取流 我发现了很多关于相同内容的文章 但没有一篇解释
  • Angular 2延迟加载模块-服务不是单例

    我已经在我的应用程序中实现了延迟加载模块 app module ts 配置正确 NgModule declarations AppComponent HeaderComponent HomeComponent imports Browser
  • 从请求响应创建 PDF 不适用于 axios,但适用于本机 xhr

    为了强制从服务器下载 PDF 我尝试使用 axios 和本机 xhr 对象 原因是我必须发送post请求 因为我向服务器传递了太多数据 所以带有简单链接的选项 例如site ru download pdf对我不起作用 尽管我最终设法用 Xh
  • 使用 javascript 将文本附加到文本区域

    如何将文本列表附加到文本区域
  • 在 MongoDB 中对 Null 值进行最后排序

    我使用以下查询根据名为 sortIndex 的字段按升序填充 MongoDB 中的项目 有时 数据库中的项目没有 sortIndex 字段 通过以下查询 具有 null sortIndex 的项目显示在顶部 我想知道如何让它们显示在底部 我
  • 一种用javascript创建随机噪声背景图像(png)的方法?

    YouTube的新布局添加了我非常喜欢的背景随机噪声 在其他网站上看到了几乎完全相同的效果 所以我计划在我的网页原型中使用相同的技术 或者至少在其中使用这个 技巧 我的工具箱以供将来使用 图片是这样的 取自http g raphaeljs
  • Node.js ES6如何从模块导出类? [复制]

    这个问题在这里已经有答案了 我正在尝试从 Node js 6 2 0 中的 CommonJS 模块导出 ES6 类 class MyClass class contents here exports MyClass 然后将其导入到另一个模块
  • 如何以编程方式确定 HTML 对象可以侦听哪些事件?

    我一直在查看developer mozilla org 和Apple 开发文档上的文档 但我找不到解释是否可以通过编程方式确定特定HTML 标记是否支持给定事件监听器的文档 就像我知道的那样
  • 如何调试使用 Testaulous (Karma) 运行的 Jasmine 规范?

    我有一个具有 Jasmine 规格的小项目 我使用 Testaulous 作为我的测试运行程序 我不明白如何调试应用程序代码或规范代码 当我尝试在 Chrome 开发工具中设置断点时 下次规范运行时不会命中它 因为它每次都会使用新的查询字符
  • 在 X 轴刻度上渲染 HTML

    我想在 D3 图表的 x 轴上渲染 HTML 基本上 我希望轴上的每个标签都是到数据中另一列的超链接 我试过了 x domain data map function d return a href d Name a 但它根本不起作用 我得到
  • Three.js:为相机添加灯光

    我想移动和旋转相机 但将点光源保持在相对于相机的相同位置 我读过很多帖子 说您可以将灯光对象添加到相机而不是场景中 就像这样 pointLight new THREE PointLight 0xffffff pointLight posit
  • 如果是数字,Chrome 会重新排序对象键,这是正常/预期的吗

    我注意到某些评估电子商务网站的某些鞋码并将其输出到屏幕上的代码会打乱 Chrome 中的顺序 给出的 JSON 可以是 7 9149 9139 10455 17208 7 5 9140 9150 10456 17209 8 2684 914
  • 如何在 Yii 框架中使用 jQuery?

    如何在 yii 中使用 jquery javascript 如何在 yii 中使用我的脚本 为什么这与以其他方式使用 jQuery 有什么不同 如何在yii中使用jquery 如上所述 您可以注册新的脚本块 也可以注册新的外部脚本文件 您还
  • 如何使用nodejs获取目录中第一个扩展名为.txt的文件?

    我所有文件所在的目录是 usr home jordan 该目录下有很多文件 在目录本身中 但有一个文件以 txt 扩展名命名 使用nodejs和fs 我想将带有txt扩展名的第一个文件 或任何文件 放入 mytxtfilepath 中 我在
  • Angularjs + Typescript,如何将 $routeParams 与 IRouteParamsService 一起使用

    我使用 routeParams 从 URI 中提取属性并为其设置本地变量 当我使用打字稿输入设置 route 参数的类型时 我无法再访问 route 参数 如何访问 routeParams 中的属性 class Controller con
  • ng-show 令人不安的 div 布局 - angularJS

    我在用ng show notesOpened 如果notesOpened 变量为true 则隐藏div 然而 当隐藏时 它会扰乱布局 有没有办法让 ng show 的行为与 css 属性相同visibility hidden 以便被隐藏的
  • 如何在 Firefox 插件上使用 jQuery 1.5.2+?

    首先 我创建了一个接收参数并返回 jQuery 的函数 例如 function getjQuery window jquery code window return window jQuery 但后来我收到了一封评论电子邮件 他们告诉我必须

随机推荐

  • 返回实现相同接口的不同泛型

    考虑到有一个方法 static IEnumerable
  • 类中未定义/未初始化的默认值

    假设您有这样的课程 class A public A A double val m val val A private double m val 创建 A 的实例后 如何检查 m val 是否已初始化 定义 换句话说 有没有办法知道 m v
  • 执行正则表达式替换 Perl

    假设我有IP10 23 233 34我想简单地交换233 for 234 第一个 第二个和最后一个八位字节未知 第三个八位位组是233 or 234 我想要进行替换 使其与 IP 子项相匹配 并保留其他所有内容 同时仍然切换最后一个八位字节
  • 对于 Perl GUI,我应该使用 Perl/Tk、Tcl::Tk 还是 Tkx?

    我很喜欢Perl Tk 但我认为这是 DOA 我认为Tcl Tk and Tkx是更好的解决方案 假设我掉落Perl Tk 是 最受支持 的路线Tcl Tk 自 2007 年以来就没有更新过 而且似乎无法联系到其作者 或者Tkx 其中任何一
  • 在 Rails 表单中使用 textarea 助手

    为什么此代码在文本区域显示错误 The FormHelper方法是text area http api rubyonrails org classes ActionView Helpers FormHelper html method i
  • System.Web.Caching 还是 System.Runtime.Caching 对于 .NET 4 Web 应用程序来说更可取

    我正在向 ASP NET Web 应用程序添加缓存 这是 NET 4 因此我可以使用 System Runtime Caching 命名空间中的类 据我所知 添加该命名空间是为了提供与 System Web Caching 中的功能类似的功
  • JPA 标准 API。使用带参数的 sql 函数调用进行查询

    我正在尝试使用 Criteria typesafe API 构建此查询 select from xxx table xxx where CALC DISTANCE xxx latitude xxx longitude lat lng lt
  • PHP 标头在新窗口中重定向?

    对于横幅管理系统 我使用 header Location http www awebsite com 重定向到正确的网站 是否可以强制此标头脚本在新窗口中打开 a href yourbannerscript php target blank
  • 最好的 iPhone 游戏,有可供初学者学习的源代码

    您会推荐初学者学习的最好的带有源代码的 iPhone 游戏是什么 不确定它是否是最好的 但 iOS 上的一款著名游戏刚刚开源 Canabalt https github com ericjohnson canabalt ios https
  • 是否有一个 Python 库可以在提供邮政编码时返回城市?

    因此 我的数据框中有邮政编码 我想在其中构造另一列 其中包含根据邮政编码的城市名称 如果我也可以提取其他信息 例如状态 那就太好了 目前我只需要德国这样做 但在不久的将来其他欧洲国家也需要这样做 我找到了一些可能的解决方案 但它们似乎仅适用
  • 为什么 Alert 函数的执行速度比 javascript 中的任何其他函数都快?

    据我所知 代码执行是从上到下开始的 在下列情况下 为什么alert 函数的执行速度比之前找到的代码行要快 Case 1 Alert 比console log console log Why was I executed last alert
  • 在 JTextFIeld 中隐藏/显示密码 (Java Swing)

    因此 我一直在研究密码强度检查器 它的工作方式是用户在文本字段中输入一些随机文本 然后显示即时视觉反馈 点的细分 我还添加了一个复选框 选中该复选框后 应隐藏密码 即用星号替换所有字符 同时保留用户输入的实际文本 文档侦听器用于跟踪文本字段
  • 替换MySQL中的所有字段

    我需要使用以下命令替换表列中的一些字符REPLACE命令 我知道REPLACE命令需要列名 然后是要更改的文本 在以下示例中为 a 字符 和新文本 在以下示例中为 e 字符 UPDATE my table SET my column REP
  • 动态捕获 CPU 和内存使用情况

    我正在运行 shell 脚本来执行 C 应用程序 该应用程序测量 api 的性能 我可以捕获 API 的延迟 返回给定参数集的值所需的时间 但我也希望以 5 10 秒的间隔捕获 CPU 和内存使用情况 有没有一种方法可以做到这一点 而又不会
  • 如何与其他进程共享现有的 char * ?

    我正在尝试使用其他分叉 执行的进程共享一些内存shmget and shmat char test test int shID char shptr key t shkey 2404 shID shmget shkey sizeof cha
  • PAnsiChar 和 PChar 的区别

    PAnsiChar 和 PChar 之间有区别吗 是什么类型 德尔福2007年之前 先感谢您 D2009 及之后 是的 有 PChar是一个指向 a 的指针Char这是一个 unicode 字符 aWideChar And PAnsiCha
  • 如何启用 PostgreSQL 函数分析器?

    这花了我一段时间才弄清楚 几周前我在一个外语维基上找到了答案 它非常有帮助 所以我想我会分享 在 Win32 上的 PostgreSQL 8 3 上 默认情况下会安装分析插件 但不会加载 只需执行以下 SQL LOAD libdir plu
  • 如何设计轮播点样式?

    我如何将我的旋转木马点设计成这样 这是我现在所拥有的 这是我的风格 slick dots position absolute bottom 45px list style none display block text align cent
  • 在生产 Java 服务器中打开 GC 日志记录是常见做法吗?

    我在一些地方 1 看到人们在生产服务器 关键任务 中启动 GC 日志记录 例如 java server Xms1024m Xmx1024m XX NewSize 256m XX MaxNewSize 256m XX UseConcMarkS
  • 当我点击它们时如何更改圆半径(使用 Three.js)?

    我有以下 JavaScript 代码 取自一个示例 它绘制了一些圆圈 当您单击其中一个圆圈时 它会改变颜色 但我还想在单击该圆圈时更改该圆圈的半径 大小 并保持其他圆圈不变 这文档 https threejs org docs index