holy crap that is awesome. external editor too! Will check this out thanks. 


        
MSA Visuals Ltd.
Unit 107 Netil Studios
1-7 Westgate St.
London E8 3RL, UK
+44 20 8123 9986
www.msavisuals.com

On 4 Oct 2010, at 14:24, Stefan Kainbacher, NEON GOLDEN wrote:

> the plugin is finally out ... just found it ...
> 
> Objective-C on the fly
> http://quartzcomposer.com/plugins/34-objective-c
> 
> 
> On Oct 4, 2010, at 2:07 PM, Mehmet Akten wrote:
> 
>> thanks, conceptually this seems like a similar approach to the 2a example 
>> Alastair sent in the previous email. a JS patch outside the iterator to 
>> create & update and manage the data, and an iterator just pull the data from 
>> a structure and render - though your JS is more OOP in itself, I will be 
>> dissecting your code a bit more.
>> 
>> While the performance of having the JS inside the iterator seemed to be a 
>> lot better (avoiding a second loop - JS loop), I do think keeping the JS 
>> outside might make management a lot simpler - especially when wanting to 
>> dynamically add and delete objects. And also perhaps giving possibility to 
>> using a structure render plugin (like Kineme's one) which takes a structure 
>> and does the loop internally. 
>> 
>> This also brings up the question about performance of JS loop vs QC 
>> iterator. If we could lose one of the loops (JS Loop vs QC Iterator), which 
>> one would be more beneficial to lose? Keep the QC iterator and the JS patch 
>> inside that which also draws (like the example I sent). Or lose the iterator 
>> and have a JS loop which updates everything, and sends to a structure 
>> renderer. Turns out JS loop is way way faster than QC iterator! See attached 
>> example. This calculates the average of N random numbers. At 50K iterations 
>> JS loop gives me 150fps, QC iterator gives 7fps! I knew iterators were slow 
>> but I didn't know they were that slow!
>> 
>> <JS loop vs iterator.qtz>
>> 
>> 
>> P.S. I remember what the dummy input is for now. If the input doesn't change 
>> to a JS patch, it isn't reevaluated. 
>> 
>> P.P.S. I realise for heavy situations a plugin would be much much much 
>> faster. The reason I'm looking into keeping it all QC for now is for rapid 
>> prototyping, improvising, realtime development etc. which is what excites me 
>> about QC in the first place. 
>> 
>> 
>> 
>> 
>>      
>> MSA Visuals Ltd.
>> Unit 107 Netil Studios
>> 1-7 Westgate St.
>> London E8 3RL, UK
>> +44 20 8123 9986
>> www.msavisuals.com
>> 
>> On 4 Oct 2010, at 10:56, Stefan Kainbacher, NEON GOLDEN wrote:
>> 
>>> 
>>> hi memo, thats the way i used to deal with oop. just wrote a plugin for a 
>>> similar use-case. thats much faster if you have more objects.
>>> 
>>> best, stefan
>>> 
>>> <oop-example.qtz>
>>> 
>>> 
>>> On Oct 3, 2010, at 9:36 PM, Mehmet Akten wrote:
>>> 
>>>> ah thanks yea, that should be d.mass , not mass.
>>>> also it should be pos += vel / mass, not pos = vel / mass. (i haven't 
>>>> slept much this past week).
>>>> So that explains the disappearing. 
>>>> 
>>>> It seems the update() is called only once per run. Even though in debug 
>>>> mode the JS patch is flashing red every frame, if I set pos to random 
>>>> every frame, it still doesn't move. So I need to make it get called every 
>>>> frame some how. Maybe that isn't too complicated, then there is still the 
>>>> Case 2 :)
>>>> 
>>>> 
>>>> P.S. I've pulled this thread in from the Quartz list to the QC list.
>>>> 
>>>> 
>>>>    
>>>> MSA Visuals Ltd.
>>>> Unit 107 Netil Studios
>>>> 1-7 Westgate St.
>>>> London E8 3RL, UK
>>>> +44 20 8123 9986
>>>> www.msavisuals.com
>>>> 
>>>> On 3 Oct 2010, at 20:27, George Toledo wrote:
>>>> 
>>>>> Also.... still sussing out where you are going/what you need to do 
>>>>> (sorry, it's taking a moment to sink in).
>>>>> 
>>>>> ...but I just opened up the composition and ran it. Mass wasn't being 
>>>>> declared anywhere, and if you did declare it where you have it in the 
>>>>> javascript, it will "fart out" (excuse my highly technical term).
>>>>> 
>>>>> This re-order allows there to be a mass value that doesn't cause error in 
>>>>> the javascript compiler. Apologies if my re-order precludes something 
>>>>> that you're trying to accomplish that's going over my head (as in, I'm 
>>>>> still sussing out the desires in your original post, in relation to this 
>>>>> qtz.)
>>>>> 
>>>>> -GT
>>>>> 
>>>>> On Sun, Oct 3, 2010 at 3:16 PM, Mehmet Akten <[email protected]> wrote:
>>>>> Thanks george, that makes perfect sense, I'll git it a shot.
>>>>> 
>>>>> P.S. I accidentally posted this to the quartz dev list first. I reposted 
>>>>> on the QC list too as its more related to that. Probably best not to 
>>>>> continue this thread on this list. Apologies for the double post.
>>>>> 
>>>>> 
>>>>> 
>>>>>   
>>>>> MSA Visuals Ltd.
>>>>> Unit 107 Netil Studios
>>>>> 1-7 Westgate St.
>>>>> London E8 3RL, UK
>>>>> +44 20 8123 9986
>>>>> www.msavisuals.com
>>>>> 
>>>>> On 3 Oct 2010, at 20:11, George Toledo wrote:
>>>>> 
>>>>>> Quick note: still reading through your case scenarios; the feedback 
>>>>>> patch will work inside of the iterator if you don't have consumer 
>>>>>> patches. The results can then be gathered in a queue and published out, 
>>>>>> where the values can then be iterated through again if necessary. Not 
>>>>>> saying this is necessarily always efficient, but it's possible.
>>>>>> 
>>>>>> -GT
>>>>>> 
>>>>>> On Sun, Oct 3, 2010 at 2:58 PM, Mehmet Akten <[email protected]> wrote:
>>>>>> Hi all, a much discussed topic I'm sure...
>>>>>> 
>>>>>> I know QC is not designed as a 'proper' OOP programming language etc. so 
>>>>>> a question regarding object oriented programming re quartz composer may 
>>>>>> be irrelevant, but nevertheless I'm trying to get my head around how 
>>>>>> best to tackle some basic data/behaviour management approaches in QC.
>>>>>> 
>>>>>> Take this scenario (this isn't for anything so I don't have specific 
>>>>>> goal, just a test case).
>>>>>> 
>>>>>> Case 1:
>>>>>> I have N initial cubes, flying around with some basic behaviour. E.g. In 
>>>>>> this particular case, I want them to each have a target point, they fly 
>>>>>> to their target point based on various parameters (mass etc). When they 
>>>>>> reach their target, they pick a new target and fly there. I'm sure I did 
>>>>>> this kinda stuff in the past using global JS vars, but I couldn't get it 
>>>>>> to work this time. I've attached my comp, if I have one iteration, I see 
>>>>>> my cube, but it doesn't move. If I have more than 1 iteration, they all 
>>>>>> appear, but then disappear after a short while. 
>>>>>> 
>>>>>> What I'm doing may be very hacky (JS patch in an iterator with a global 
>>>>>> array of structures). THe feedback patch seems to try and address this 
>>>>>> issue, but obviously doesn't work in an iterator.
>>>>>> 
>>>>>> 
>>>>>> Then there's more. Imagine a few more basic scenarios.
>>>>>> 
>>>>>> Case 2:
>>>>>> 1. when I click in an empty space, a new object is created and added to 
>>>>>> the flock
>>>>>> 2. when i click on an existing object, it is deleted
>>>>>> 3. pressing 'e' toggles the app between 'edit' mode and 'play' mode. in 
>>>>>> 'edit mode they all stop moving and when you click on an existing object 
>>>>>> you get some very basic options:
>>>>>>  a. by clicking elsewhere you can set the new target for that object
>>>>>>  b. pressing d deletes the object
>>>>>>  c. numbers 1-9 defines how that particular object should be drawn 
>>>>>> (texture, cube, sphere etc.)
>>>>>>  d. etc.
>>>>>> 
>>>>>> I can imagine how to do #3 (keep track of a bool in the root.data 
>>>>>> object). and #3c (multiplexer). #1, #2, #3a and #3b should be straight 
>>>>>> forward too, but its the data management that I can't get my head 
>>>>>> around. 
>>>>>>  
>>>>>> 
>>>>>> I know if it gets too complicated it just makes sense to write a plugin, 
>>>>>> but I just want to see exactly how far can can QC be taken in this way 
>>>>>> regarding logic and behaviours. The scenario I mention above doesn't 
>>>>>> seem too complicated, in fact is quite basic and I feel you should be 
>>>>>> able to do it within a noodley environment.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> P.S. connecting the JS output to enable of a billboard worked by the 
>>>>>> way, thanks for the tip alessandro
>>>>>> 
>>>>>> Cheers,
>>>>>> 
>>>>>> Memo.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>  
>>>>>> MSA Visuals Ltd.
>>>>>> Unit 107 Netil Studios
>>>>>> 1-7 Westgate St.
>>>>>> London E8 3RL, UK
>>>>>> +44 20 8123 9986
>>>>>> www.msavisuals.com
>>>>>> 
>>>>>> 
>>>>>>  _______________________________________________
>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>> Quartz-dev mailing list      ([email protected])
>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>> http://lists.apple.com/mailman/options/quartz-dev/gtoledo3%40gmail.com
>>>>>> 
>>>>>> This email sent to [email protected]
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> -- 
>>>>>> George Toledo
>>>>>> [email protected]
>>>>>> www.georgetoledo.com
>>>>>> 
>>>>>> The information contained in this E-mail and any attachments may be 
>>>>>> confidential.
>>>>>> If you have received this E-mail in error, please notify us immediately 
>>>>>> by telephone or return E-mail.
>>>>>> You should not use or disclose the contents of this E-mail or any of the 
>>>>>> attachments for any purpose or to any persons.
>>>>>> 
>>>>> 
>>>>> 
>>>>>  _______________________________________________
>>>>> Do not post admin requests to the list. They will be ignored.
>>>>> Quartz-dev mailing list      ([email protected])
>>>>> Help/Unsubscribe/Update your Subscription:
>>>>> http://lists.apple.com/mailman/options/quartz-dev/gtoledo3%40gmail.com
>>>>> 
>>>>> This email sent to [email protected]
>>>>> 
>>>>> 
>>>>> 
>>>>> -- 
>>>>> George Toledo
>>>>> [email protected]
>>>>> www.georgetoledo.com
>>>>> 
>>>>> The information contained in this E-mail and any attachments may be 
>>>>> confidential.
>>>>> If you have received this E-mail in error, please notify us immediately 
>>>>> by telephone or return E-mail.
>>>>> You should not use or disclose the contents of this E-mail or any of the 
>>>>> attachments for any purpose or to any persons.
>>>>> 
>>>>> <OOP test1_b.qtz>
>>>> 
>>>> _______________________________________________
>>>> Do not post admin requests to the list. They will be ignored.
>>>> Quartzcomposer-dev mailing list      ([email protected])
>>>> Help/Unsubscribe/Update your Subscription:
>>>> http://lists.apple.com/mailman/options/quartzcomposer-dev/stefan%40neongolden.net
>>>> 
>>>> This email sent to [email protected]
>>> 
>>> --
>>> NEW phone number: 0676 60 33 989
>>> 
>>> --
>>> NEON GOLDEN
>>> VISUAL EXPERIMENT
>>> 
>>> lab.neongolden.net
>>> 
>>> --
>>> www.respectyourvj.net
>>> 
>>> 
>>> 
>>> 
>>> 
>> 
> 
> --
> NEW phone number: 0676 60 33 989
> 
> --
> NEON GOLDEN
> VISUAL EXPERIMENT
> 
> lab.neongolden.net
> 
> --
> www.respectyourvj.net
> 
> 
> 
> 
> 

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to