Closed loukotka closed 10 years ago
Hello @loukotka
Please take a look to TrailsRenderer and Trail classes. They support to render such "flight routes" with a ribbon like this:
Let me know it this helps.
Thanks for pointing me in the right direction... Unfortunately I still cannot see my line rendered.
I just replaced renderer stuff in 3D Model example from demo application in this way:
...
final TrailsRenderer trailsRenderer = new TrailsRenderer();
Trail trail = new Trail(Color.fromRGBA255(225, 10, 10, 120), 5, 10);
trailsRenderer.addTrail(trail);
trail.addPosition(Angle.fromDegrees(50), Angle.fromDegrees(50), 0);
trail.addPosition(Angle.fromDegrees(40), Angle.fromDegrees(-40), 10);
...
Am I missing something here? Thanks
Did you add the trailsRenderer to the renderers-list?
And those positions looks suspicious
trail.addPosition(Angle.fromDegrees(50), Angle.fromDegrees(50), 0); trail.addPosition(Angle.fromDegrees(40), Angle.fromDegrees(-40), 10);
(10,10) degrees delta, and just 10 meters of difference.... for sure this code will produce a Trail under the ground.
Take in mind that Trail doesn't interpolate between positions, is your responsibility to create the inner-interpolated positions.
Yes, I have added renderer like: _builder.addRenderer(trailsRenderer);
but I will try to add more positions with higher heights, and I will let you know then.
My current code:
...
final TrailsRenderer trailsRenderer = new TrailsRenderer();
Trail trail = new Trail(Color.fromRGBA255(225, 10, 10, 120), 3, 10000);
trailsRenderer.addTrail(trail);
trail.addPosition(Angle.fromDegrees(50), Angle.fromDegrees(10), 100);
trail.addPosition(Angle.fromDegrees(49.5), Angle.fromDegrees(11), 150);
trail.addPosition(Angle.fromDegrees(49), Angle.fromDegrees(12), 200);
trail.addPosition(Angle.fromDegrees(48), Angle.fromDegrees(13), 250);
trail.addPosition(Angle.fromDegrees(47), Angle.fromDegrees(13), 250);
_builder.addRenderer(trailsRenderer);
_g3mWidget = _builder.createWidget();
...
is still not successful in rendering the trails. I have checked that the method render is called consequently on: TrailsRenderer, Trail, TrailSegment and even generated Mesh, but I still cannot see anything.
I didn't try your code, but I see something strange in the trail construction.
This is the constructor definition: Trail(Color color, float ribbonWidth, float heightDelta)
This is your instantiation: Trail trail = new Trail(Color.fromRGBA255(225, 10, 10, 120), 3, 10000);
float ribbonWidth: You are asking for a trail with a width of 3 meters, too thin for such a large trail. float heightDelta: This is a delta (in meters) for the positions heights. In you example, the final heights of the trail will be 100+100000, 150+100000, 200+10000, and so on.
I finally got it working with:
...
final TrailsRenderer trailsRenderer = new TrailsRenderer();
Trail trail = new Trail(Color.fromRGBA255(225, 10, 10, 255), 50000, 15000);
trailsRenderer.addTrail(trail);
trail.addPosition(Angle.fromDegrees(50), Angle.fromDegrees(10), 0);
trail.addPosition(Angle.fromDegrees(49.5), Angle.fromDegrees(11), 4000);
trail.addPosition(Angle.fromDegrees(49), Angle.fromDegrees(12), 8000);
trail.addPosition(Angle.fromDegrees(48), Angle.fromDegrees(13), 15000);
trail.addPosition(Angle.fromDegrees(47), Angle.fromDegrees(13), 15000);
...
Thank you very much for your help.
Dears, how can I add simple line (with specific color and width) connecting two 3D points? (e.g. flight routes)? I have found this snippet on http://serdis.dis.ulpgc.es/~atrujill/glob3m/Tutorial/vectorialGeometry.html :
// drawing lines Shape line1 = new LineShape(new Geodetic3D(Angle.fromDegrees(39.69), Angle.fromDegrees(3.31), 6000), // start position new Geodetic3D(Angle.fromDegrees(39.56), Angle.fromDegrees(3.39), 6000), // end position AltitudeMode.ABSOLUTE, // altitude mode 8, // pixel size Color.fromRGBA(1, 0.5f, 0, 1)); // color shapesRenderer.addShape(line1);
but it seems the class LineShape is gone. I have just found code working with BoxShapes (part of the DEMO application)
Any help would be appreciated. Thanks, Tomas Loukotka