簡體   English   中英

更新線框幾何

[英]Updating Wireframe Geometry

是否可以顯示線框和對象本身,其頂點會通過着色器不斷更新。

我的代碼基本上是

var mainGeo = new THREE.SphereGeometry(100, 80, 80);
var shaderMaterial = new THREE.ShaderMaterial({
  transparent: true,
  uniforms: displacementUniforms,
  vertexShader: document.getElementById('displacement_vertex').textContent,
  fragmentShader: document.getElementById('displacement_fragment').textContent,  
});

myObject = new THREE.Object3D();

objectLayer1 = new THREE.Mesh(mainGeo, shaderMaterial);
objectLayer2 = new THREE.LineSegments(
  new THREE.WireframeGeometry( objectLayer1.geometry ),
  new THREE.LineBasicMaterial({
    color: 0xff5555,
    transparent: true,
    opacity: 0.5
  })
);

myObject.add(objectLayer1);
myObject.add(objectLayer2);
scene.add(myObject);

update();

updateRender(){
  //RenderScene
  //RenderShaderSourceScene
}

update(){

  //do some stuff

  updateUniforms();
  updateRender();

  requestAnimationFrame(update);
}

updateUniforms(){

  //change shader uniform values

}

我嘗試了wireframeGeometry,但無法更新其頂點。

例如; 我用置換着色器創建了這個對象,並隨時間更改了它的值。

置換着色器對象

現在我的目標是 在對象周圍顯示線框,還可以訪問線框的屬性,例如寬度,顏色,不透明度等。

那怎么可能?

提前致謝..

我想通了!

    objectLayer2 = new THREE.LineSegments(objectLayer1.geometry,shaderMaterial);

但現在有顏色問題。


編輯,是的!

由於我的線段是從着色器獲取頂點和顏色值的,因此我需要編寫一個小片段着色器以重新着色線段。

這里是;

uniform vec3 lineSegmentColor;

void main() { 
  gl_FragColor = vec4( lineSegmentColor, 1.0 );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM