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]