Presumably the older version of this plugin is Intel only too. This
isn't the plug-in you referred to as having just written that did 4K
at 60+fps is it?
On 05/10/2010, at 12:24 AM, 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/qc.student.au%40gmail.com
This email sent to [email protected]
_______________________________________________
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]