<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I tried to think about it and I believe it may be easier than it seems, unless I am missing something.<div><br></div><div>General idea of "swapping inputs":</div><div>I see that a lot of energy is used to figure out which inputs can swap with which.</div><div>I'd say it's not a problem at all. Why don't we simply say - everything can be swapped with everything.</div><div>If we give the option to user (for example "shift" to swap, no key - replace) - it's the user who decides.</div><div>If I decide that I want to "swap" - the app should let me.</div><div><br></div><div>Where should the existing link go?</div><div><br></div><div>1. To first available (not linked) input of the same type.</div><div>2. To first available input of the "next" type.</div><div><br></div><div>In my opinion socket types can be analyzed in the order of "importance". The order could be as follows: "SHADER', 'RGBA', 'VECTOR', 'VALUE'</div><div><br></div><div>So say we have "Mix" node.</div><div>input[0]: Fac (VALUE)</div><div>input[1]: Color (RGBA)</div><div>input[2]: Color (RGBA)</div><div><br></div><div>input[1] is linked. When I shift drag link to it - existing link jumps to input[2] if it's free. If it's linked - our link goes to Factor. We don't care about the type in this case. If nothing is available - existing link simply vanishes.</div><div><br></div><div><br></div><div>"Internal links" for muting:</div><div>Please correct me if I'm wrong, but it seems that "internal links" are used only for muting, right?</div><div>Now internal links are not created when input and output types don't match. Why? Is it because it's impossible or difficult to code, or because it's purpose is to help artist in some way?</div><div>In my opinion such limitation doesn't give the artist any benefit.</div><div>The purpose of muting is muting, which means make the node "vanish". Make it not count at all.</div><div><br></div><div>Let's analyze some examples:</div><div>1.</div><div>Separate RGBA:</div><div>We have RGBA input and 4 VALUE outputs.</div><div>Internal links should go from RGBA input to every single output, even though they are of VALUE type.</div><div>When I mute this node - every single output of it should give me full RGBA that goes into this node.</div><div><br></div><div>2.</div><div>Combine RGBA:</div><div>Four VALUE inputs and one RGBA output.</div><div>default internal link should go from first linked input to the output.</div><div>User should have option to change it (it used to work this way, but now it doesn't. Why?)</div><div><br></div><div>Now the question - does such behavior require "rewriting blender"? Maybe it is extremely difficult because of definitions of various socket types?</div><div><br></div><div><br></div><div>Analyzing more complex nodes:</div><div>It is IMHO possible to figure out the universal algorithm.</div><div>It could go like this:</div><div><br></div><div>1. Check linked outputs.</div><div>2. for each linked output (ordered: SHADER type first, then RGBA, then VECTOR, then VALUE)</div><div>find first input of the same type that is linked.</div><div>3. If first is already "taken" by other output of same type - check next.</div><div>4. If no input of same type is available check next types.</div><div>5. If not enough inputs (there are more linked outputs than linked inputs - outputs lower in hierarchy could be linked to inputs already taken. In such case the same routine could be used.</div><div>This would end up in internal links going from one input to more than one outputs, but it's absolutely fine.</div><div><br></div><div>It could be rather easily put into loop. If the procedure is fine - no need to define behavior for each node type separately.</div><div>Such procedure would work well provided internal links are used ONLY for muting.</div><div><br></div><div>&nbsp;</div><div>Regards</div><div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Bartek Skorupa</div><div><br></div><div><a href="http://www.bartekskorupa.com">www.bartekskorupa.com</a></div></div></span></span></span>
</div>

<br><div><div>On 19 lis 2013, at 11:08, Bartek Skorupa (priv) &lt;<a href="mailto:bartekskorupa@bartekskorupa.com">bartekskorupa@bartekskorupa.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=windows-1252"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">@Lukas:<div><blockquote type="cite"><div dir="ltr">Problem with swapping links is that the information currently available in nodes is not sufficient to make good guesses about which sockets can swap links among each other. We'd need some sort of tags on sockets to indicate to the operator which of these sockets are interchangeable (similar issue with muting, see&nbsp;<a href="http://developer.blender.org/T37334">http://developer.blender.org/T37334</a>).</div></blockquote><div>Yes, I see the point. It seems pretty simple at a first glance, but then… Well, not easy to find patterns.</div><div>In my opinion every single node has kind of "primary" inputs/outputs and then the rest.</div><div><br></div><div>At the moment we are (together with Greg Zaal) in the process of merging "Nodes Efficiency Tools" with Greg's "Node Wrangler".</div><div>We didn't commit this yet, because some fixes are still needed.</div><div>Recently I created the class for "swapping node types".</div><div>It allows to select a node and change its type to anything else.</div><div>The class is created such that it adds new node of the type chosen by user and then "relink" all links of original node whenever possible.</div><div>I struggled for some time to find good patterns.</div><div>I'm not sure if those patterns are good enough, but everything seems to work nicely.</div><div>You could check this class in our "WIP" file and see what I took into account.</div><div>Maybe it will be helpful?</div><div><br></div><div>The file is here:</div><div><a href="https://github.com/gregzaal/node_wrangler/blob/master/node_wrangler_wip.py">https://github.com/gregzaal/node_wrangler/blob/master/node_wrangler_wip.py</a></div><div><br></div><div>Take a look at lines: 1358 to 1554. This is the operator c<span style="background-color: transparent;">alled: "<span style="line-height: 18px; white-space: pre; ">NWSwapNodeType"</span></span></div><div><span style="background-color: transparent;"><span style="line-height: 18px; white-space: pre; "><br></span></span></div><div><br><div apple-content-edited="true">
<span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Bartek Skorupa</div><div><br></div><div><a href="http://www.bartekskorupa.com/">www.bartekskorupa.com</a></div></div></span></span></span>
</div>

<br><div><div>On 19 lis 2013, at 10:11, Lukas Tönne &lt;<a href="mailto:lukas.toenne@gmail.com">lukas.toenne@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">Problem with swapping links is that the information currently available in nodes is not sufficient to make good guesses about which sockets can swap links among each other. We'd need some sort of tags on sockets to indicate to the operator which of these sockets are interchangeable (similar issue with muting, see&nbsp;<a href="http://developer.blender.org/T37334">http://developer.blender.org/T37334</a>).<div>
<br></div><div>The "detach output" feature exists already! Use ctrl+click on output socket to disconnect all links and put them somewhere else, just like disconnecting input links works by default. Also works with multiple links, quite handy imo.</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Nov 19, 2013 at 9:38 AM, Bartek Skorupa (priv) <span dir="ltr">&lt;<a href="mailto:bartekskorupa@bartekskorupa.com" target="_blank">bartekskorupa@bartekskorupa.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">At first when I noticed that swapping disappeared I thought it's a bug.<div>There are situations when it was confusing, because you had to remember to unlink one input, but on the other hand swapping inputs of Mix / Alpha Over / Math nodes is (was) pretty handy.</div>
<div>I'd go a bit further with what you propose:</div><div><div class="im"><blockquote type="cite"><div style="word-wrap:break-word"><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">1.) To swap 2 nodes, hold down a modifier key</div>
</div></blockquote></div>Why not:</div><div>"To swap - just drag the link. NOT to swap - hold down modifier's key"</div><div><br></div><div>I'd also like to mention one feature that I'm often missing: Ability to detach link from output to move it to another output. This one may be tricky though because we can have several links going out from single output.</div>
<div>But we could have something like this:</div><div>Now Ctrl LMB drag cuts the link, Shift LMB drag adds reroute.</div><div>We could have Ctrl-Shift LMB to detach input with possibility to reconnect (it would "glue" to the cursor, exactly the way as when you add new link by dragging from one socket to another)</div>
<div>You could click on the output socket itself and when only one link is attached to it it would get detached, but when more links go out of it you'd have to move the cursor over the link itself.</div><div>Ctrl-Shift-LMB should switch us to "modal", such that you can "escape" or RMB to resign.</div>
<div><br></div><div>Cheers</div><div><br><div>
<span style="border-collapse:separate;border-spacing:0px"><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><div style="word-wrap:break-word">
<div>Bartek Skorupa</div><div><br></div><div><a href="http://www.bartekskorupa.com/" target="_blank">www.bartekskorupa.com</a></div></div></span></span></span>
</div><div><div class="h5">

<br><div><div>On 19 lis 2013, at 08:25, Sebastian König &lt;<a href="mailto:sebastiankoenig@posteo.de" target="_blank">sebastiankoenig@posteo.de</a>&gt; wrote:</div><br><blockquote type="cite"><div style="word-wrap:break-word">
<div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">Hi!</div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">As mentioned in the post below, the behavior of node sockets has been changed recently, so that autoconnect is disabled entirely.</div>
<div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">This is nice for the most part, but in some cases it has in fact been very handy, especially if you just wanted to swap the 2 inputs for mix or math nodes.</div>
<div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">So I propose to bring node-swapping back, but with a modification. There could be 2 ways of doing it:</div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">
<br></div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">1.) To swap 2 nodes, hold down a modifier key after disconnecting the first socket and before reconnecting it to the second socket. For example Alt or Shift. (Shift would be nice because it makes some sense in the literal way, but probably Alt comes to mind faster).&nbsp;</div>
<div style="font-family:Helvetica,Arial;font-size:13px;margin:0px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">2.) There could be an operator with hotkey to just swap 2 socket inputs. Advantage: Searchable via Spacebar, can be&nbsp;found in the menu, faster to do.</div>
<div style="font-family:Helvetica,Arial;font-size:13px;margin:0px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">Or how about&nbsp;just doing both?</div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">
Personally I need to swap inputs very often for math/mix, so having a hotkey would be nice.</div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">
What do you think?</div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">Cheers,</div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">
<br></div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">Seb</div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px"><br></div><div style="font-family:Helvetica,Arial;font-size:13px;margin:0px">
<br></div><p style="color:#a0a0a8">On 19. November 2013 at 05:46:31, LswaN (<a href="mailto://subscription57@live.com" target="_blank">subscription57@live.com</a>) wrote:</p> <blockquote type="cite"><span><div bgcolor="#FFFFFF" text="#000000">







<div>I'd like to add my 2 cents here.
Regarding the thumbnails, I think hidden by default is a bit better
than removing them altogether. I agree with David that thumbs can
be helpful when you just need a quick at-a-glance view of what is
going on in a set of nodes.<br>
<br>
Also, Blender did auto-link new nodes to your selected node at one
time, but iirc the feature was removed because people often found
its choices for linking&nbsp; confusing/unpredictable. For example,
if you added a mix node, you might end up with the auto-link
connected to the wrong input of the mix node.<br>
Personally, I liked the feature (even though it wasn't perfect), so
I wouldn't mind seeing it make a comeback.<br>
<br>
On 11/18/2013 8:57 PM, Aditia A. Pratama wrote:<br></div>
<blockquote type="cite"><p>I agree with sean. Thumbs take to much space for me...but yeah
for only for non-footage nodes. I also propose to hide node by
default option in user pref, so when calling node it will in hidden
mode which is very easy to navigate and attach.</p><p>There's also one usability request by me, but need your opinion
guys. How about auto link nodes. Let say I've selected image node
and then I called blur node, it will auto linked by last selected
node, so instead drag your node around it will be more faster that
way IMO.</p><p>For viewer node, i think it's better to have canvas like
vse.</p>
<div class="gmail_quote">On Nov 19, 2013 5:37 AM, "David McSween"
&lt;<a href="mailto:3pointedit@gmail.com" target="_blank">3pointedit@gmail.com</a>&gt;
wrote:<br type="attribution">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">Yes I agree that thumbs can become clutter and are
often inaccurate but they provide handy visual ques or sign posts
for your process. Perhaps default to closed/hidden would be better.
They can be replaced with viewer nodes but you can't send multiple
viewer nodes to the uv image window. It would be really helpful to
allocate unique names to viewer nodes, so that you can call them
independently on their own uv image windows. This would allow the
user to compare details of node outputs.</p>
<div class="gmail_quote">On 19 Nov 2013 07:30, "Sean Kennedy"
&lt;<a href="mailto:mack_dadd2@hotmail.com" target="_blank">mack_dadd2@hotmail.com</a>&gt; wrote:<br type="attribution">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
<div dir="ltr">I'm all for removing thumbnails, at least on
non-footage nodes. It could be useful on image nodes, movie clips,
etc, because if you have a lot of footage being used, it could help
keep it visually organized. But even on those, making it default to
not show the thumbnail is ideal.
<div><br></div>
<div>sean</div>
<div>
<div><br>
<div>
<hr>
Date: Mon, 18 Nov 2013 22:20:08 +0100<br>
From: <a href="mailto:m.dewanchand@atmind.nl" target="_blank">m.dewanchand@atmind.nl</a><br>
To: <a href="mailto:bf-compositor@blender.org" target="_blank">bf-compositor@blender.org</a><br>
Subject: Re: [Bf-compositor] Wiki Page<br>
<br>
<div>Hi Sebastian,<br>
<br>
Nice! Just missing some priorities....<br>
Regarding status updates; when starting a project the developer can
create a page for it, containing details about the project /
solution / progress, and link it to the main page.<br>
<br>
So should we start removing thumbnail previews? If yes, do you also
want to remove the preview from the input- and output nodes?<br>
<br>
Rgds,<br>
J &amp; M<br>
<br>
Sebastian König schreef op 11/8/13 1:25 PM:<br></div>
<blockquote>
<div style="font-family:Helvetica,Arial;font-size:13px">
Hey all!</div>
<div style="font-family:Helvetica,Arial;font-size:13px">
<br></div>
<div style="font-family:Helvetica,Arial;font-size:13px">
I&nbsp;have started to fill in the wiki page.</div>
<div style="font-family:Helvetica,Arial;font-size:13px">
<a href="http://wiki.blender.org/index.php/Dev:Ref/Proposals/Compositor" target="_blank">http://wiki.blender.org/index.php/Dev:Ref/Proposals/Compositor</a></div>
<div style="font-family:Helvetica,Arial;font-size:13px">
I'm not super experienced with Wiki editing, so feel free to edit
and elaborate.</div>
<div style="font-family:Helvetica,Arial;font-size:13px">
I am also open to suggestions how to improve the
order/appearance/structure.</div>
<div style="font-family:Helvetica,Arial;font-size:13px">
<br></div>
<div style="font-family:Helvetica,Arial;font-size:13px">
Probably there should also be some kind&nbsp;of indication what’s
being worked on, what’s the status etc.</div>
<div style="font-family:Helvetica,Arial;font-size:13px">
<br></div>
<div style="font-family:Helvetica,Arial;font-size:13px">
More to come.</div>
<div style="font-family:Helvetica,Arial;font-size:13px">
<br></div>
<div style="font-family:Helvetica,Arial;font-size:13px">
Cheers!</div>
<div style="font-family:Helvetica,Arial;font-size:13px">
<br></div>
<div style="font-family:Helvetica,Arial;font-size:13px">
Sebastian</div>
<div style="font-family:Helvetica,Arial;font-size:13px">
<br></div>
<div style="font-family:Helvetica,Arial;font-size:13px">
<br></div>
<br>
<br>
<pre>_______________________________________________
Bf-compositor mailing list
<a href="mailto:Bf-compositor@blender.org" target="_blank">Bf-compositor@blender.org</a>
<a href="http://lists.blender.org/mailman/listinfo/bf-compositor" target="_blank">http://lists.blender.org/mailman/listinfo/bf-compositor</a>
</pre></blockquote>
<br>
<br>
_______________________________________________ Bf-compositor
mailing list <a href="mailto:Bf-compositor@blender.org" target="_blank">Bf-compositor@blender.org</a> <a href="http://lists.blender.org/mailman/listinfo/bf-compositor" target="_blank">http://lists.blender.org/mailman/listinfo/bf-compositor</a></div>

</div>
</div>
</div>
</div>
<br>
_______________________________________________<br>
Bf-compositor mailing list<br>
<a href="mailto:Bf-compositor@blender.org" target="_blank">Bf-compositor@blender.org</a><br>
<a href="http://lists.blender.org/mailman/listinfo/bf-compositor" target="_blank">http://lists.blender.org/mailman/listinfo/bf-compositor</a><br>

<br></blockquote>
</div>
<br>
_______________________________________________<br>
Bf-compositor mailing list<br>
<a href="mailto:Bf-compositor@blender.org" target="_blank">Bf-compositor@blender.org</a><br>

<a href="http://lists.blender.org/mailman/listinfo/bf-compositor" target="_blank">http://lists.blender.org/mailman/listinfo/bf-compositor</a><br>

<br></blockquote>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
Bf-compositor mailing list
<a href="mailto:Bf-compositor@blender.org" target="_blank">Bf-compositor@blender.org</a>
<a href="http://lists.blender.org/mailman/listinfo/bf-compositor" target="_blank">http://lists.blender.org/mailman/listinfo/bf-compositor</a>
</pre></blockquote>
<br>


_______________________________________________
<br>Bf-compositor mailing list
<br><a href="mailto:Bf-compositor@blender.org" target="_blank">Bf-compositor@blender.org</a>
<br><a href="http://lists.blender.org/mailman/listinfo/bf-compositor" target="_blank">http://lists.blender.org/mailman/listinfo/bf-compositor</a>
<br></div></span></blockquote></div>_______________________________________________<br>Bf-compositor mailing list<br><a href="mailto:Bf-compositor@blender.org" target="_blank">Bf-compositor@blender.org</a><br><a href="http://lists.blender.org/mailman/listinfo/bf-compositor" target="_blank">http://lists.blender.org/mailman/listinfo/bf-compositor</a><br>
</blockquote></div><br></div></div></div></div><br>_______________________________________________<br>
Bf-compositor mailing list<br>
<a href="mailto:Bf-compositor@blender.org">Bf-compositor@blender.org</a><br>
<a href="http://lists.blender.org/mailman/listinfo/bf-compositor" target="_blank">http://lists.blender.org/mailman/listinfo/bf-compositor</a><br>
<br></blockquote></div><br></div>
_______________________________________________<br>Bf-compositor mailing list<br><a href="mailto:Bf-compositor@blender.org">Bf-compositor@blender.org</a><br><a href="http://lists.blender.org/mailman/listinfo/bf-compositor">http://lists.blender.org/mailman/listinfo/bf-compositor</a><br></blockquote></div><br></div></div></div>_______________________________________________<br>Bf-compositor mailing list<br><a href="mailto:Bf-compositor@blender.org">Bf-compositor@blender.org</a><br>http://lists.blender.org/mailman/listinfo/bf-compositor<br></blockquote></div><br></div></body></html>