javascript - Three.js:如何在两个对象之间创建过渡?
问题描述
我用圆柱体创建了一个隧道。当鼠标位于角落时,它会移除旧圆柱体并创建一个具有不同数量径向段的新圆柱体。
但是现在对象之间的变化没有任何过渡。有可能这样做吗?
也许删除对象是错误的方式?
var w = window.innerWidth;
var h = window.innerHeight;
var circle = new THREE.Mesh(
new THREE.CylinderGeometry( 50, 50, 1024, 32, 1, true ),
new THREE.MeshBasicMaterial({
transparent: true,
alphaMap: tunnelTexture,
side: THREE.BackSide,
})
);
其他对象的创建方式类似,只有 3/4/6 段
if (mouseX < w/4 && h-(h/4) < mouseY < h/4) {
scene.remove(circle);
scene.remove(triangle);
scene.remove(hexagon);
scene.add(rect);
}
if (mouseY > h-(h/4)) {
scene.remove(circle);
scene.remove(rect);
scene.remove(hexagon);
scene.add(triangle);
}
if (mouseX> w-(w/4) && h-(h/4) < mouseY < h/4) {
scene.remove(triangle);
scene.remove(rect);
scene.remove(hexagon);
scene.add(circle);
}
if (mouseY < h/4) {
scene.remove(triangle);
scene.remove(rect);
scene.remove(circle);
scene.add(hexagon);
}
谢谢你的帮助!:)
解决方案
您可以变形“拓扑相同”的几何图形,但仅仅将一个对象转换为另一个对象并不是那么简单。
解释“拓扑相同”的类似问题: 将立方体变形为球体
您也许可以考虑一种不同的方法。
1)您可以缩小一个几何体并同时生成和增长另一个几何体,这样它至少看起来像一个过渡。
2)您可以滑动一个屏幕并带入另一个屏幕吗?
推荐阅读
- wordpress - Wordpress:带有关系下拉列表的表单和将记录添加到关系内容类型的方法
- jquery - 我有一个可编辑的 li 内容,我用 span 包装,但是我在编辑内容时遇到了如何设置有限字符的问题
- flutter - result.status == 'OK' 部分未在使用谷歌方向 API 的折线期间执行
- jquery - Clicked 元素或类上的 jQuery $(this) 是如何工作的?
- excel - Excel过滤器隐藏结果与VBA过滤条件
- javascript - 使用 Normalizr.js 基于给定模式对 redux 状态进行非规范化
- python - Matlab 在 Python 中的 Parfor 与 ProcessPoolExecutor(多维数组的问题)
- python - 在 Python 中删除选项对我不起作用
- python - XML 请求在 SOAPUI-5.6.0 中有效,但在 Pycharm 中无效
- parsing - Windows cmd:解析 Ping 的输出