首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于Three.js的管道水流模拟

基于Three.js的管道水流模拟
EN

Stack Overflow用户
提问于 2021-10-13 07:26:25
回答 2查看 617关注 0票数 2

我想在我的反应应用程序中使用Three.js模拟水在管道中的流动。你可以在下面的图片中看到,我想实现三个功能,

water.(user-defined)

  • Animate

  • 基于% (0-100)绘制一个管道

  • --现在用从左向右移动的箭头(从左到右/从右到左)-用户定义的

来填充70%的水流。

我试过的东西不起作用

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-13 09:07:36

基于ExtrudeGeometry的空心圆柱体(管)

代码语言:javascript
运行
复制
body{
  overflow: hidden;
  margin: 0;
}
代码语言:javascript
运行
复制
<script type="module">
import * as THREE from "https://cdn.skypack.dev/three@0.133.1";
import {
  OrbitControls
} from "https://cdn.skypack.dev/three@0.133.1/examples/jsm/controls/OrbitControls.js";

let scene = new THREE.Scene();
let camera = new THREE.PerspectiveCamera(60, innerWidth / innerHeight, 1, 1000);
camera.position.set(0, 0, 10);
camera.lookAt(scene.position);
let renderer = new THREE.WebGLRenderer({
  antialias: true
});
renderer.setSize(innerWidth, innerHeight);
renderer.setClearColor(0x404040);
document.body.appendChild(renderer.domElement);

let controls = new OrbitControls(camera, renderer.domElement);

let light = new THREE.DirectionalLight(0xffffff, 1);
light.position.setScalar(1);
scene.add(light, new THREE.AmbientLight(0xffffff, 0.5));

let r = 1, R = 1.25;

// pipe
let pipeShape = new THREE.Shape();
pipeShape.absarc(0, 0, R, 0, Math.PI * 2);
pipeShape.holes.push(new THREE.Path().absarc(0, 0, r, 0, Math.PI * 2, true));
let pipeGeometry = new THREE.ExtrudeGeometry(pipeShape, {
    curveSegments: 100,
    depth: 10,
    bevelEnabled: false
});
pipeGeometry.center();
let pipeMaterial = new THREE.MeshLambertMaterial({color: "silver"});
let pipe = new THREE.Mesh(pipeGeometry, pipeMaterial);
scene.add(pipe);


window.addEventListener("resize", onResize);

renderer.setAnimationLoop(_ => {
  renderer.render(scene, camera);
})

function onResize(event) {
  camera.aspect = innerWidth / innerHeight;
  camera.updateProjectionMatrix();
  renderer.setSize(innerWidth, innerHeight);
}

</script>

票数 3
EN

Stack Overflow用户

发布于 2021-10-13 07:43:22

看起来你的圆柱体几何学比你的场景要大。

请注意以下示例:https://codepen.io/freddy-turtle/pen/OJjVmvG?editors=1010

圆柱体以CylinderGeometry = 1,1,3作为第一个参数出现在整个屏幕上。

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

https://stackoverflow.com/questions/69551308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档