可以通过以下步骤实现:
import * as THREE from 'three';
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
const geometry = new THREE.PlaneGeometry(5, 5, 32, 32);
这里的参数分别是平面的宽度、高度、宽度分段数和高度分段数。分段数越高,平面越平滑。
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00, side: THREE.DoubleSide });
这里的参数可以根据需求进行调整,color表示平面的颜色,side表示平面的两面都可见。
const plane = new THREE.Mesh(geometry, material);
scene.add(plane);
geometry.vertices.forEach((vertex) => {
const distance = vertex.distanceTo(new THREE.Vector3(0, 0, 0));
const height = Math.sin(distance) * 0.5;
vertex.z = height;
});
geometry.verticesNeedUpdate = true;
这里的代码通过遍历平面的顶点,根据顶点到原点的距离计算出高度,并将高度赋值给顶点的z坐标,从而实现平面边的弯曲效果。
const light = new THREE.PointLight(0xffffff, 1, 100);
light.position.set(0, 0, 10);
scene.add(light);
function animate() {
requestAnimationFrame(animate);
// 添加动画效果的代码
renderer.render(scene, camera);
}
animate();
完整的代码示例可以参考以下链接: PlaneGeometry - Three.js创建具有弯曲边的平面代码示例
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云对象存储(COS)。
领取专属 10元无门槛券
手把手带您无忧上云