添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

three.js原点或圆圈效果

通过Three.js实现一个圆点或圆圈的效果,如果不自定义着色器的代码情况下,一般有两个思路,一个是通过Three.js几何体API绘制任何一种你想要的轮廓,一个是通过背景透明的纹理贴图来实现。

通过 CircleGeometry 绘制一个圆形轮廓, RingGeometry 可以绘制一个圆环形状,通过 ShapeGeometry 可以绘制任何轮廓,只要输入轮廓的坐标数据,然后通过几何体创建的轮廓创建一个网格模型即可。

对于通过几何体创建一个圆点或圆圈形状,一般要使用网格模型 Mesh ,如果使用纹理贴图的方式,对于点模型 Points 、精灵模型 Sprite 和网格模型 Mesh 都是可以的。

如需要一个点或圈是什么形状,只需要美术出一张背景透明的.png格式图片就可以,把显示的形状,绘制在png图片上即可,就像普通前端中的UI标签图片一样。然后在Three.js代码中加载图片的一个纹理对象Texture,然后赋值给模型对象绑定的材质对象 .map 属性即可,这时候要注意一定要把材质对象的 .transparent 属性设置为 true ,否则png透明区域没用,无法显示一个你想要的轮廓。

至于项目中选择网格模型还是说精灵模型,要根据具体情况来定,不过纹理贴图的设置代码都是一样的。

如果选择网格模型一般需要通过Threejs几何体API PlaneGeometry 来创建一个矩形平面,然后可以给他设置任何你想要的纹理贴图形状。

对于使用纹理贴图,可以实现一个渐变色的光圈相比较通过几何体API创建网格模型的情况也很容易,你只需要让美术把png图片的光圈颜色或透明度进行渐变就可以。

本文转载地址: 我的个人技术博客

three.js原点或圆圈效果通过Three.js实现一个圆点或圆圈的效果,如果不自定义着色器的代码情况下,一般有两个思路,一个是通过Three.js几何体API绘制任何一种你想要的轮廓,一个是通过背景透明的纹理贴图来实现。几何体通过CircleGeometry绘制一个圆形轮廓,RingGeometry可以绘制一个圆环形状,通过ShapeGeometry可以绘制任何轮廓,只要输入轮廓的坐标数... 1、如果一个点A在被另一个物体B里面。 2、则从点A到空间另一点(C)的射线一定与物体B的边缘相交。 3、通过以物体B中心为起点,向物体的各个顶点发出射线,检测射线是否与其他点(A)相交,若相交则 检查最近的一个交点与射线起点的距离,如果这个距离比物体中心到物体顶点的距离都要小,则点A在 物体B里面 点A就是鼠标点击到世界坐标系中的坐标 物体B就是选中的物体 而点C就是相机的位置。 点A就是鼠标点击到世界坐标系中的坐标 物体B就是选中的物体 而点C就是相机的位置。 该 效果 是通过 ArcCurve渲染圆或者圆弧,参数:ArcCurve( x, y, r, srange, erange ); x,y 圆弧坐标 原点 , r:圆弧半径 ; srange, erange:圆弧起始角度; // 一些教程中介绍说 ArcCurve是 EllipseCurve 的别名,查看参数,发现两者类似 //和椭圆曲线 EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRo 他是几何体Geometry的方法,通过该方法就可以把数组points的顶点数据提取出来复制给几何体的顶点位置属性 同样缓冲几何体也有setFromPoints方法,不过他是将顶点数据赋值给 当我们进行话直线的时候,首先要确定两点 然后我们给他材质,然后添加到场景中 为了能看清楚两端,我们还可以给他添加点模型 渲染出来是这样的 此外还有三维直线和二维直线在three js 中已经有相应的接口,供我们创建一条平滑的曲线,他是利用Catmul 除了矩形,圆形在实际的图形运用中也比较广泛。例如水波或光圈 效果 ;若是用最基础的webgl理论来讲,我们都知道圆属于多边形的绘制,可以通过绘制圆上的各点,再将其连接起来通过gl.drawArrays方法,传入gl.TRIANGLE_FAN来进行绘制。今天我们介绍Three. js 的绘制方法。 二.绘制原理 其实在three. js 中,是有CircleGeometry圆几何体类的,我们可以很轻松的new一个来创建一个圆形平面,然后填充材质即可得到圆形的图案。那我们为什么要自己来绘制呢,原因很简单,自定义的
CircleGeometry圆几何体 是欧几里得几何的一个简单形状。它是由一些三角形部分组成的,它们以中心点为中心,并延伸到一个给定的半径。它是逆时针的,从一个开始的角度和一个给定的中心角度。它还可以用来创建常规的多边形(五角星等),其中的段数决定了边的数量。 示例:CircleGeometry.html CircleGeometry(radius : Float, segme...
让距离圆心坐标(0.5, 0.5)的距离作为该点的颜色值。 float pct = distance(st,vec2(0.5)); gl_FragColor = vec4(vec3(pct), 1.); 2、通过控制距离-方法二(dot) dot...
要实现水面倒影 效果 ,可以使用three. js 的水面倒影插件`three. js -water`。这个插件可以创建一个水面对象,并且将其反射到场景中,从而实现水面倒影 效果 。 以下是实现水面倒影 效果 的基本步骤: 1. 导入`three. js `和`three. js -water`插件。 ```javascript import * as THREE from 'three'; import Water from 'three-water'; 2. 创建场景、渲染器和相机。 ```javascript const scene = new THREE.Scene(); const renderer = new THREE.WebGLRenderer(); const camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000); camera.position.set(0, 100, 200); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); 3. 创建水面对象。 ```javascript const waterGeometry = new THREE.PlaneBufferGeometry(10000, 10000); const water = new Water(waterGeometry, { color: 'blue', scale: 5, flowDirection: new THREE.Vector2(1, 1), textureWidth: 512, textureHeight: 512, reflectivity: 0.3 water.rotation.x = -Math.PI / 2; scene.add(water); 4. 创建地面对象,并将其添加到场景中。 ```javascript const groundGeometry = new THREE.PlaneBufferGeometry(10000, 10000); const groundMaterial = new THREE.MeshPhongMaterial({ color: 0x999999, depthWrite: false const ground = new THREE.Mesh(groundGeometry, groundMaterial); ground.rotation.x = -Math.PI / 2; scene.add(ground); 5. 创建一个立方体,并将其添加到场景中。 ```javascript const cubeGeometry = new THREE.BoxBufferGeometry(50, 50, 50); const cubeMaterial = new THREE.MeshPhongMaterial({ color: 'red' const cube = new THREE.Mesh(cubeGeometry, cubeMaterial); cube.position.set(0, 25, 0); scene.add(cube); 6. 创建一个点光源,并将其添加到场景中。 ```javascript const light = new THREE.PointLight('white', 1, 1000); light.position.set(0, 200, 0); scene.add(light); 7. 使用`three. js -water`插件提供的`update`方法更新水面对象。 ```javascript function animate() { requestAnimationFrame(animate); water.material.uniforms.time.value += 1.0 / 60.0; water.render(); renderer.render(scene, camera); animate(); 通过以上步骤,就可以在three. js 中实现水面倒影 效果 了。完整的代码示例可以参考`three. js -water`插件的官方文档。