Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >THREE.js:更新RingGeometry顶点

THREE.js:更新RingGeometry顶点
EN

Stack Overflow用户
提问于 2017-12-19 03:46:04
回答 1查看 579关注 0票数 2

我想动态更新RingGeometry的顶点。我所做的是创建另一个RingGeometry,并用新的顶点替换第一个的顶点。

问题是它在THREE.JS的6.7版本上工作得很好,但在最新的版本(8.9)上它停止了工作。

带有版本6.7的代码片段:

代码语言:javascript
运行
AI代码解释
复制
scene = new THREE.Scene;
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000);
renderer = new THREE.WebGLRenderer;
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

counter = 0;
increase = Math.PI / 100;

render = function() {
  requestAnimationFrame(render);
  angle = Math.PI * (Math.sin(counter) + 1) / 2; // avoid negatives
  counter += increase;
  ring = new THREE.RingGeometry(4, 5, 40, 1, 0, angle);
  mesh.geometry.vertices = ring.vertices;
  mesh.geometry.verticesNeedUpdate = true;
  renderer.render(scene, camera);
};

geometry = new THREE.RingGeometry(4, 5, 40, 1, 0, Math.PI * (Math.sin(counter)+1) / 2);
material = new THREE.MeshBasicMaterial({color: 0xffff00});
mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);

camera.position.z = 10;
renderer.render(scene, camera);
render();
代码语言:javascript
运行
AI代码解释
复制
<script src="https://threejs-socketio-basic.herokuapp.com/three67.js"></script>

版本8.9的代码片段:

代码语言:javascript
运行
AI代码解释
复制
scene = new THREE.Scene;
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000);
renderer = new THREE.WebGLRenderer;
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

counter = 0;
increase = Math.PI / 100;

render = function() {
  requestAnimationFrame(render);
  angle = Math.PI * (Math.sin(counter) + 1) / 2; // avoid negatives
  counter += increase;
  ring = new THREE.RingGeometry(4, 5, 40, 1, 0, angle);
  mesh.geometry.vertices = ring.vertices;
  mesh.geometry.verticesNeedUpdate = true;
  renderer.render(scene, camera);
};

geometry = new THREE.RingGeometry(4, 5, 40, 1, 0, Math.PI * (Math.sin(counter)+1) / 2);
material = new THREE.MeshBasicMaterial({color: 0xffff00});
mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);

camera.position.z = 10;
renderer.render(scene, camera);
render();
代码语言:javascript
运行
AI代码解释
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/89/three.min.js"></script>

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-19 17:08:57

嗯,经过几个小时的摆弄,我找到了问题所在!

在新版本的THREE.js中,它需要"elementsNeedUpdate = true;“标志。

版本8.9上的Working fiddle:

代码语言:javascript
运行
AI代码解释
复制
scene = new THREE.Scene;
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000);
renderer = new THREE.WebGLRenderer;
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

counter = 0;
increase = Math.PI / 100;

render = function() {
  requestAnimationFrame(render);
  angle = Math.PI * (Math.sin(counter) + 1.01) / 2; // avoid negatives
  counter += increase;
  ring = new THREE.RingGeometry(4, 5, 40, 1, 0, angle);
  mesh.geometry.vertices = ring.vertices;
  mesh.geometry.verticesNeedUpdate = true;
  mesh.geometry.elementsNeedUpdate = true;
  renderer.render(scene, camera);
};

geometry = new THREE.RingGeometry(4, 5, 40, 1, 0, Math.PI * (Math.sin(counter)+1) / 2);
material = new THREE.MeshBasicMaterial({color: 0xffff00});
mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);

camera.position.z = 10;
renderer.render(scene, camera);
render();
代码语言:javascript
运行
AI代码解释
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/89/three.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47879749

复制
相关文章
Raspberry PI Nginx 安装
Raspberry PI Nginx 安装 1.      查看系统版本信息 root@raspberrypi:/tmp# cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 7.0 (wheezy)" NAME="Debian GNU/Linux" VERSION_ID="7.0" VERSION="7.0 (wheezy)" ID=debian ANSI_COLOR="1;31" HOME_URL="http://www.debian.org
囚兔
2018/02/08
1.1K0
Hello, Raspberry Pi.
最近在研究自动升级开源项目的时候偶然想到IoT领域的自动升级,突然想起2016年买的树莓派(Raspberry Pi)。那就分享一下如何入门树莓派的教程,我当时一共买了两块一款是Raspberry Pi 3b(2016年价格259元去年以抽奖送给社区小伙伴)另一块Raspberry Pi 3 Model b+(2018年价格221元)。在今年买了一块Raspberry Pico(24元)这些统称为开发板具体的型号如下:
JusterZhu
2022/12/07
3K0
Hello, Raspberry Pi.
Raspberry Pi(树莓派)
作者:matrix 被围观: 2,372 次 发布时间:2013-07-15 分类:兼容并蓄 零零星星 | 2 条评论 »
HHTjim 部落格
2022/09/26
6960
Raspberry Pi(树莓派)
Raspberry Pi开发实战
sudo apt-get autoremove xxxxxxxx同时移除必备软件包
云深无际
2020/08/12
9390
Raspberry Pi开发实战
Raspberry Pi 推出 Zero W
Raspberry Pi 基金会 推出了 Pi Zero W。作为 Pi Zero 的一个新型号,Pi Zero W 在主板上新集成了 WiFi 和蓝牙,其 10 美元的售价要比 Pi Zero 贵上一倍,但是与五年前发布的 Raspberry Pi Model B 的 35 美元售价相比依然便宜不少。具备主板联网功能的 Pi Zero W 将开启物联网项目的更好前景。
Debian中国
2018/12/20
1.1K0
SSH通过SSH代理连接到内网机器
操作步骤: 1.实现本地机器到代理机器的SSH连接。 ssh ftpuser@proxyip
旺财的城堡
2018/11/20
2K0
树莓派3(Raspberry Pi 3)
2、下载noobs lite即可(https://www.raspberrypi.org/downloads/noobs/),解压到SD卡中,启动Raspberry Pi 3
py3study
2020/01/07
1.1K0
树莓派 Raspberry Pi 连接 WiFi
在有显示器和鼠标键盘的情况下,而你安装的系统又是包含桌面图形界面的,那么直接开机,进入系统后,可以看到桌面如下图。
全栈程序员站长
2022/08/30
3K0
树莓派 Raspberry Pi 连接 WiFi
处理Raspberry Pi的RAW文件
树莓派的应用一般保存的文件都是jpg的,但是这种文件是有损的,有时候我们想要RAW文件来进行更加个性化的处理。
云深无际
2022/02/09
1K0
处理Raspberry Pi的RAW文件
树莓派Raspberry Pi 4安装Vulkan
树莓派Raspberry Pi 3B+安装OpenCL:树莓派Raspberry Pi 3B+安装OpenCL_小锋学长生活大爆炸-CSDN博客
小锋学长生活大爆炸
2021/12/04
1.4K0
树莓派Raspberry Pi 4安装Vulkan
如何在 Raspberry Pi 上安装 Ubuntu
Raspberry Pi 一直都是最流行的单板电脑。它可以被用作各种目的,例如:桌面PC,家庭影音中心,智能 WI-FI路由器,自动化操作系统和游戏服务器。用户场景数不胜数。
雪梦科技
2020/05/11
1.9K0
Raspberry Pi 即将迎来 Vulkan 的支持
Raspberry Pi 基金会表示,他们正在致力于为 Raspberry Pi 提供开源 Vulkan 驱动程序的支持。
Debian中国
2020/02/17
1.3K0
使用QEMU模拟树莓派Raspberry Pi
被誉为 “世界上最流行最便宜的小型电脑” 的「树莓派」Raspberry Pi 是一款性价比超高的迷你电脑主机 (仅有信用卡大小), 深受全球开发者、极客、技术爱好者们的追捧和喜爱
yuanfan2012
2020/08/25
9.4K1
使用QEMU模拟树莓派Raspberry Pi
外网登录访问树莓派Raspberry Pi
本地的树莓派 Raspberry Pi,只能在局域网内访问,怎样从公网也能登录访问树莓派 Raspberry Pi?
码路
2018/11/27
1.9K0
Raspberry Pi 支持开源脑机接口
有许多不同的方法可以用来检测和解释人脑中的电活动,以便它可以用来控制其他外部设备,比如计算机。
脑机接口社区
2022/08/25
5210
Raspberry Pi 支持开源脑机接口
在Raspberry Pi上重温Amiga 【Gaming】
我对复古游戏和让我们有今天的生活的电脑历史的保存十分着迷。我认为大多数程序员都有一台帮助他们培养对编程热爱的机器;对我来说,那就是Commodore Amiga。我现在正在恢复几个Amiga,让他们重新工作。这将需要一些时间,但我想要一些可以迅速运行起来的东西,以便使我可以使用操作系统,并完成一些我从来没有完成过的孩子一样的游戏。
五月Rambo
2019/11/11
1.5K0
在Raspberry Pi上重温Amiga 【Gaming】
基于CodeSys和Raspberry Pi制作简单PLC
目前常见的PLC厂家有:SIEMENS、Rockwell、Schneider、Mitsubishi、Beckhoff、GE、Omron、台达……但常用的PLC编程语言都是相似的,比如LD、ST、FBD、CFC、IL、GRAPH等,CoDeSys支持LD、ST、IL、FBD、CFC等,用CoDeSys可以学习多种PLC编程语言,也可以向其他PLC编程软件切换,比如TwinCAT2和SoMachine就是基于CoDeSys开发的。用Raspberry Pi代替工业现场使用的PLC便于学习和各类研究等。
剑指工控
2021/11/09
2.6K0
基于CodeSys和Raspberry Pi制作简单PLC
实现在外网SSH远程访问内网树莓派的详细教程
在使用树莓派 (Raspberry Pi) 可以做的所有事情中,将其用作为家庭网络中的服务器非常流行。微小的占地面积和低功耗使其成为运行轻量级服务器的完美设备。
iOS Magician
2023/10/11
1.3K0
实现在外网SSH远程访问内网树莓派的详细教程
Raspberry Pi (树莓派) 3代A+版发布
近日Raspberry Pi(树莓派)基金会宣布发布树莓派3代A+版(Raspberry Pi 3 MODEL A+)。尺寸是标准的树莓派A+尺寸,继承了3代的双频2.4GHz和5GHz无线网络、蓝牙4.2/BLE,以及经过改进的散热管理。拥有64位四核1.4 GHz处理器,并且价格低至25美元。
Debian中国
2018/12/21
1.1K0
如何在局域网外SSH远程访问连接到家里的树莓派?
在使用树莓派 (Raspberry Pi) 可以做的所有事情中,将其用作为家庭网络中的服务器非常流行。微小的占地面积和低功耗使其成为运行轻量级服务器的完美设备。
iOS Magician
2023/10/11
7331
如何在局域网外SSH远程访问连接到家里的树莓派?

相似问题

有没有Android工具可以找到正在运行的应用的布局名称?

638

检查远程进程是否正在运行(linux)

20

Android检查应用程序中正在运行的服务

22

有没有工具可以检查正在运行的进程中的.NET对象?

41

Android穿戴检查手机应用程序是否正在运行

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文