使用下述代码之后meshss对象边缘没有发光,// 创建平面,并定义平面的尺寸 let planeGeometry2 = new THREE.PlaneGeometry(60, 20); //创建一个基本材质,并设置颜色 let planeMaterial = new THREE.MeshBasicMaterial({color: 0xcccccc}); //把两个对象合并到Mesh网格对象 let plane = new THREE.Mesh(planeGeometry2, planeMaterial); const meshss = new THREE.Mesh(planeGeometry2, planeMaterial); // 设置平面绕x轴旋转90度 meshss.rotation.x = -0.5 * Math.PI; // 设置平面的坐标位置 meshss.position.x = 0; meshss.position.y = 5; meshss.position.z = 0; // 将平面添加进场景 this.scene.add(meshss); composer = new EffectComposer(this.renderer); // 特效组件 renderPass = new RenderPass(this.scene, this.camera); composer.addPass(renderPass); // 特效渲染 outlinePass = new OutlinePass(new THREE.Vector2(window.innerWidth, window.innerHeight), this.scene, this.camera); composer.addPass(outlinePass); // 加入高光特效 outlinePass.pulsePeriod = 2; //数值越大,律动越慢 outlinePass.visibleEdgeColor.set(0xff0000); // 高光颜色 outlinePass.hiddenEdgeColor.set(0x000000);// 阴影颜色 outlinePass.usePatternTexture = false; // 使用纹理覆盖? outlinePass.edgeStrength = 5; // 高光边缘强度 outlinePass.edgeGlow = 1; // 边缘微光强度 outlinePass.edgeThickness = 1; // 高光厚度 console.log("outline!!!!!!!!!!!!") outlinePass.selectedObjects = meshss; // 需要高光的obj
时间: 2024-04-26 22:21:55 浏览: 166
在你的代码中,你创建了一个名为`meshss`的Mesh对象,并将其传递给了`OutlinePass`的`selectedObjects`属性,以指定需要添加轮廓线的对象。然而,你也创建了一个名为`plane`的另一个Mesh对象,但没有将其添加到`selectedObjects`列表中,因此它没有被轮廓线所包围,也就无法看到发光的效果。
如果你想让`plane`对象也发光,需要将其添加到`selectedObjects`列表中,像这样:
```javascript
outlinePass.selectedObjects = [meshss, plane]; // 需要高光的obj列表,可以添加多个
```
在这个示例中,我们将`meshss`和`plane`对象都添加到`selectedObjects`列表中,这样它们就都会被轮廓线所包围,并产生发光的效果。
相关问题
我要使用MeshPhongMaterial开启meshss对象的边缘显示的同时解决planeMaterial报错,实参类型MeshPhongMaterial不可分配给MeshBasicMaterial
如果你想同时使用 `MeshPhongMaterial` 来开启边缘显示,可以将 `meshss` 对象的材质类型修改为 `THREE.MeshPhongMaterial`,然后在该材质对象上开启边缘显示即可。修改后的代码如下:
```javascript
// 创建一个 MeshPhongMaterial 材质
var material = new THREE.MeshPhongMaterial( { color: 0xffffff } );
// 将 material 对象赋值给 meshss 的材质属性
meshss.material = material;
// 开启边缘显示
material.wireframe = true;
// 创建一个 MeshBasicMaterial 材质
var planeMaterial = new THREE.MeshBasicMaterial( { color: 0xffffff } );
// 将 planeMaterial 对象赋值给 plane 的材质属性
plane.material = planeMaterial;
```
这样就可以同时使用 `MeshPhongMaterial` 来开启边缘显示,同时解决 `planeMaterial` 报错的问题了。
阅读全文