It does not conform to the principle of perspective.
And i try to solve this problem .
in https://threejs.org/manual/#en/transparency,
It `s say The solution here is to manually split the each pane into 2 panes so that there really is no intersection.
but if the two objects is moving ,or i have many transparency object to render . It’s performance intensive and i dont want to add useless mesh.
i also try to sort renderOrder and edit for every Mesh. it aslo doesn`t work
Oh. It appears you want (A over B) and (B over A) to produce different results, even if both A and B have opacity 0.5. I don’t know an easy way to do this besides splitting the planes along the intersection line; or using ray tracing rendering. Maybe some of the experts here can provide a better suggestion.
What the original poster wants seems to be OIT (Order Independent Transparency). It’s quite an advanced techique; usually one needs to 1) create a list of transparent samples per pixel 2) sort that per-pixel list 3) solve the transparency in the correct order.
Yes, I read a lot of articles, learned about the technology, found some examples (OIT, WOIT) and wrote a demo, OIT demo
This is a bit of a loss of performance, and will cause the image to be noisy, and will lose some information, and can not solve this problem
For this specific case though, the advice of splitting each plane into 2 sounds like the way to go. this way their center points will sort properly from the default threejs depth sort… since it sorts by mesh.position in worldspace iirc.
For more complex scenarios, another option is to manually generate different index buffers for the geometry, sorting the triangles in the correct order from the cardinal directions… then at rendertime (perhaps mesh.onBeforeRender=) you find the closest cardinal direction matching position-camera.position and set that index buffer on the geometry before rendering it. The more lists you make the more accurate you can probably get the sorting… but end of the day… some pathological cases will likely remain, and this is only inter-triangle sorting, not inter-object.