realbasic-games
[Top] [All Lists]

Re: Animation and memory issue

To: REALbasic Games <realbasic-games at lists dot realsoftware dot com>
Subject: Re: Animation and memory issue
From: Frank Condello <developer at chaoticbox dot com>
Date: Mon, 25 Jul 2005 22:40:45 -0400
Delivered-to: realbasic-games at lists dot realsoftware dot com
References: <FF3D4383-F5B1-4405-A67F-BDF52954811A at miensoftware dot com> <D52AC133-DDD0-4558-8725-9508D39F6E79 at chaoticbox dot com> <F29BF550-E17D-4DD4-B907-AD971BCB8823 at miensoftware dot com> <8F479F6E-AC0F-4117-8F81-68A68C3A43E1 at chaoticbox dot com> <DE4335D4-957D-49C7-86EC-C6304D6238FA at miensoftware dot com> <DCC3198F-BD3B-405D-B445-072E01D1716A at chaoticbox dot com> <4B8067F5-6CC8-4F99-80CA-74EC961FB1AB at miensoftware dot com> <40DAC1AB-9ADD-4DDF-B37D-C0E885B609D6 at chaoticbox dot com> <EAA7040C-001D-4BB2-8B3B-6DD76F457D1E at miensoftware dot com> <04F31E3F-9A37-4202-BB77-39A17FD6B12F at chaoticbox dot com> <A8E3338F-7E45-46C5-8747-8AB49B8EF210 at miensoftware dot com> <4CEEFD58-497E-4A52-938E-056D9B6C92BA at chaoticbox dot com> <47D2EBC7-FC40-4880-AC7B-DED93FD89175 at miensoftware dot com>
On 25-Jul-05, at 7:50 PM, Lo Saeteurn wrote:

Basically what I'm confused about is: if I use the New Trimesh (existingtrimeshdata) to construct a new trimesh, does it create a copy of everything (points, triangles, edges, etc.) or does it just reference all the items?

Trimesh data is mostly just pointers to other blocks of data (look up TQ3TriMeshData in the Quesa API reference). When you create a new trimesh using an existing data set, you're just copying pointers for the points, uvs, normals (etc). You're not actually making a copy of the vertexes.

Is the object handle pretty much the pointer? If not, how do I get an object handle from this custom trimesh?

Trimesh3D.GetHandle will give you the Quesa object handle if you need it for custom declares.

Okay, but what I meant was what if I create it completely from scratch:

//tmsh is an existing trimesh
dim tmsh as Trimesh3D
dim mem1, mem2 as memoryblock
    mem1=tmsh.GetData
    mem2=NewMemoryBlock(tmsh.kDataSize)
    mem2.StringValue(0,mem2.Size)=mem1.StringValue(0,mem2.Size)
mem2.Ptr(tmsh.kOfsPoints)= NewMemoryBlock(NumberOfPoints*12)// copy the points here

mem2 is the new trimesh and also a memoryblock, how do I add it to a display group?

mem2 isn't a trimesh, it's trimesh *data* - GetHandle and GetData are two totally different things. GetHandle returns a pointer to an opaque TQ3GeometryObject (that's what you use to add it to a display group) and GetData returns a copy of a TQ3TriMeshData struct, but the actual vertex data is somewhere in the bowels of Quesa, unless you made and assigned it yourself from scratch like you do with the points above.

If you're using the Quesa Wrappers for display groups you don't need GetHandle - just add objects directly to groups:

    displayGroup.AddObject tmsh

This is assuming that calling "New Trimesh" copies all the data including the points, triangles, etc. If it references these, I should have no problem keeping just the Vertices locally.

See above - it just copies references.

Frank.
–––––––––––––––––––––––––––––––––
Open Source RB Goodies and Shareware
<http://developer.chaoticbox.com/>
<http://www.chaoticbox.com/>
–––––––––––––––––––––––––––––––––

_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>

<Prev in Thread] Current Thread [Next in Thread>