For many cases, the cached geometry scheme is a good default. Even,
in your case it works okay, as long as you know what is going on.
And, yes, if you get back a cached geometry, it will have the same
capabilities.
Doug.
>
>Thanks for the response, Doug.
>
>Sharing is fine. However, this kind of
>sharing is pretty much useless because
>most of the time we want to set capability
>after geometry creation, right?
>
>Also, can I safely assume the cached geometry
>I got has the exact capabilities as my original
>setting?
>
>Yang
>
>-----Original Message-----
>From: Doug Twilleager [mailto:[EMAIL PROTECTED]]
>Sent: Monday, December 04, 2000 10:12 AM
>To: [EMAIL PROTECTED]
>Subject: Re: [JAVA3D] live cylinder geometry? why?
>
>
>The primitive utilities cache the Geometry references used to represent
>the geometry. If a creation request can be fulfilled with existing
>Geometry objects, they is used. In your case, the same Geometry references
>are being used by all of your Cylinder objects. By the time your code
>creates
>the last view, the Geometry references from the first view have become live.
>Since they are shared, the ones for the last view are live as well.
>
>To prevent the primitive utilities from caching geometry references, pass
>in Primitive.GEOMETRY_NOT_SHARED as a primitve creation flag. Your memory
>consumtion will go up, but the live problem will go away.
>
>Doug Twilleager
>Sun Microsystems
>
>>MIME-Version: 1.0
>>Subject: [JAVA3D] live cylinder geometry? why?
>>To: [EMAIL PROTECTED]
>>
>>My application has 3 different j3d views.
>>Each of my j3d view contains one to two cylinders.
>>The code segment for cylinder creation looks like this ...
>>
>>
>> int[] parts = {Cylinder.TOP, Cylinder.BODY, Cylinder.BOTTOM};
>>
>> Cylinder cylinder = new Cylinder(radius, dist);
>>
>> for (int i = 0; i < parts.length; i++) {
>> Shape3D shape = cylinder.getShape(parts[i]);
>> if (shape != null) {
>> /* set shape capability here */
>> Geometry geometry = shape.getGeometry();
>> if (geometry != null) {
>> geometry.setCapability(Geometry.ALLOW_INTERSECT);
>> }
>> }
>> }
>>
>>The first view and second view work perfectly. The third view
>>does not allow me to set the capability of the body geometry.
>>The error says the geometry is "live". I checked the shape
>>of the body cylinder. It is NOT live. How can the geometry
>>be "live"? I have not attached the cylinder to any transform
>>group yet. Why does the code work for the other two views?
>>
>>Yang
>>
>>===========================================================================
>>To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
>>of the message "signoff JAVA3D-INTEREST". For general help, send email to
>>[EMAIL PROTECTED] and include in the body of the message "help".
>
>===========================================================================
>To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
>of the message "signoff JAVA3D-INTEREST". For general help, send email to
>[EMAIL PROTECTED] and include in the body of the message "help".
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".