Hi guys
I had problem with concave objects z-sorting that I'm trying to solve by cutting it in two pieces using MeshUtil.cutTriangleMesh() (
viewtopic.php?f=14&t=1404). Everything looks fine, except both result TriangleMesh3Ds are somehow magically linked to the original object's ViewportLayer.
More specifically: setting the layerIndex for the result objects viewportLayer has no effect while setting layerIndex for the original object's viewportLayer affects both result objects at the same time.
What confuses me most is the fact that the original object was not added to stage nor his viewportLayer was not created yet! I have spent lot of time trying to fix it but there layer must be somehow associated with the verticles or faces itself.
I have created simple example,
please check the attached file. Here is part of the code:
Code:
- var sphere : Sphere = new Sphere();
- sphere.z = 500;
- container3D.addChild(sphere);
-
- var cylinder : Cylinder = new Cylinder(new ColorMaterial(0xFFFFFF * Math.random()), 200, 100, 64, 16);
-
- var plane : Plane3D = new Plane3D(new Number3D(Math.sin(.5 * Math.PI), 0, -Math.cos(.5 * Math.PI)), new Number3D(0,0,0));
- var cylinderSlices : Array = MeshUtil.cutTriangleMesh(cylinder, plane);
-
- cylinderSlices[0].x = 20;
- cylinderSlices[1].x = -20;
-
- container3D.addChild(cylinderSlices[0]);
- container3D.addChild(cylinderSlices[1]);
-
- viewportLayer = viewport.getChildLayer(container3D);
- viewportLayer.sortMode = ViewportLayerSortMode.INDEX_SORT;
-
- var cubeLayer : ViewportLayer = viewportLayer.getChildLayer(sphere);
- var sliceALayer : ViewportLayer = viewportLayer.getChildLayer(cylinderSlices[0]);
- var sliceBLayer : ViewportLayer = viewportLayer.getChildLayer(cylinderSlices[1]);
-
- cubeLayer.layerIndex = 2;
- sliceALayer.layerIndex = 3;
- sliceBLayer.layerIndex = 1;
-
- //TODO: uncomment this to affect the result slices
- //var cylinderLayer : ViewportLayer = viewportLayer.getChildLayer(cylinder);
- //cylinderLayer.layerIndex = 4;
-
Help me Obi-Wan Kenobi (John Brookes) you're my only hope.