﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Extensions%3A2.4%2FPy%2FNodes%2FCookbook%2FColor</id>
	<title>Extensions:2.4/Py/Nodes/Cookbook/Color - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Extensions%3A2.4%2FPy%2FNodes%2FCookbook%2FColor"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Extensions:2.4/Py/Nodes/Cookbook/Color&amp;action=history"/>
	<updated>2026-06-23T10:01:41Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Extensions:2.4/Py/Nodes/Cookbook/Color&amp;diff=59468&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Extensions:2.4/Py/Nodes/Cookbook/Color&amp;diff=59468&amp;oldid=prev"/>
		<updated>2018-06-28T17:54:35Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2018年6月28日 (木) 17:54時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Extensions:2.4/Py/Nodes/Cookbook/Color&amp;diff=59467&amp;oldid=prev</id>
		<title>wiki&gt;Mindrones bot: Bot: Fixing redirects</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Extensions:2.4/Py/Nodes/Cookbook/Color&amp;diff=59467&amp;oldid=prev"/>
		<updated>2010-05-26T17:15:43Z</updated>

		<summary type="html">&lt;p&gt;Bot: Fixing redirects&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Extensions:2.4/Py/Nodes/Cookbook|Back to index]]&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
* Add your idea here.&lt;br /&gt;
&lt;br /&gt;
== Recipes ==&lt;br /&gt;
&lt;br /&gt;
=== Average ===&lt;br /&gt;
[[Image:Pynode-average.png|right|thumb|Example output of average node.[[http://wiki.blender.org/uploads/f/f5/Pynode-average.blend .blend]]]]&lt;br /&gt;
This script just produces an average of provided colors. Note that you can tweak the amount of inputs by just changing the value of AMOUNT_OF_INPUTS.&lt;br /&gt;
{{clr}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from Blender import Node&lt;br /&gt;
&lt;br /&gt;
AMOUNT_OF_INPUTS = 4 # when tweaking, make sure this is &amp;gt;=1&lt;br /&gt;
&lt;br /&gt;
class AverageNode(Node.Scripted):&lt;br /&gt;
    def __init__(self, sockets):&lt;br /&gt;
        cols = []&lt;br /&gt;
        &lt;br /&gt;
        for i in range(1, AMOUNT_OF_INPUTS+1):&lt;br /&gt;
            col_name = 'col' + str(i)&lt;br /&gt;
            col = Node.Socket(col_name, val=4*[1.0])&lt;br /&gt;
            cols.append(col)&lt;br /&gt;
        &lt;br /&gt;
        sockets.input = cols&lt;br /&gt;
        sockets.output = [cols[0],]&lt;br /&gt;
&lt;br /&gt;
    def __call__(self):&lt;br /&gt;
        rgba = 4*[0.0]&lt;br /&gt;
        &lt;br /&gt;
        for i, color in enumerate(rgba):&lt;br /&gt;
            sum = 0.0&lt;br /&gt;
            &lt;br /&gt;
            for j in range(AMOUNT_OF_INPUTS):&lt;br /&gt;
                sum += self.input[j][i]&lt;br /&gt;
            &lt;br /&gt;
            rgba[i] = sum / AMOUNT_OF_INPUTS&lt;br /&gt;
        &lt;br /&gt;
        self.output.col1 = rgba&lt;br /&gt;
&lt;br /&gt;
__node__ = AverageNode&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Boolean ===&lt;br /&gt;
[[Image:Pynode-boolean.png|right|thumb|Example output of boolean node.[[http://wiki.blender.org/uploads/3/35/Pynode-boolean.blend .blend]]]]&lt;br /&gt;
This script provides various boolean operations. The operations provided are AND, OR and XOR (exclusive OR). Use mode input to define which operation to use. Operation value mappings can be seen in the beginning of the script.&lt;br /&gt;
{{clr}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from Blender import Node&lt;br /&gt;
&lt;br /&gt;
AND = 0&lt;br /&gt;
OR = 1&lt;br /&gt;
XOR = 2&lt;br /&gt;
&lt;br /&gt;
def avg(*args):&lt;br /&gt;
    amount = 0&lt;br /&gt;
    sum = 0.0&lt;br /&gt;
    list_len = len(args[0]) # should get min of lists here&lt;br /&gt;
    &lt;br /&gt;
    for i in range(len(args)):&lt;br /&gt;
        for j in range(list_len):&lt;br /&gt;
            sum += args[i][j]&lt;br /&gt;
        amount += list_len&lt;br /&gt;
    &lt;br /&gt;
    if amount:&lt;br /&gt;
        return sum / amount&lt;br /&gt;
&lt;br /&gt;
class BooleanNode(Node.Scripted):&lt;br /&gt;
    def __init__(self, sockets):&lt;br /&gt;
        mode = Node.Socket('Mode', val=0.0, min=0.0, max=2.0)&lt;br /&gt;
        threshold = Node.Socket('Threshold', val=0.5, min=0.0, max=1.0)&lt;br /&gt;
        col1 = Node.Socket('Color1', val = 4*[1.0])&lt;br /&gt;
        col2 = Node.Socket('Color2', val = 4*[1.0])&lt;br /&gt;
        &lt;br /&gt;
        col = Node.Socket('Color', val = 4*[1.0])&lt;br /&gt;
        &lt;br /&gt;
        sockets.input = [mode, threshold, col1, col2]&lt;br /&gt;
        sockets.output = [col]&lt;br /&gt;
&lt;br /&gt;
    def __call__(self):&lt;br /&gt;
        mode = int(self.input.Mode + .5)&lt;br /&gt;
        threshold = self.input.Threshold&lt;br /&gt;
        color1, color2 = self.input.Color1, self.input.Color2&lt;br /&gt;
        color1_ok, color2_ok = False, False&lt;br /&gt;
        set_output = False&lt;br /&gt;
        &lt;br /&gt;
        if avg(color1) &amp;gt; threshold:&lt;br /&gt;
            color1_ok = True&lt;br /&gt;
        &lt;br /&gt;
        if avg(color2) &amp;gt; threshold:&lt;br /&gt;
            color2_ok = True&lt;br /&gt;
        &lt;br /&gt;
        if mode == AND:&lt;br /&gt;
            if color1_ok and color2_ok:&lt;br /&gt;
                set_output = True&lt;br /&gt;
        elif mode == OR:&lt;br /&gt;
            if color1_ok or color2_ok:&lt;br /&gt;
                set_output = True&lt;br /&gt;
        elif mode == XOR:&lt;br /&gt;
            if color1_ok ^ color2_ok:&lt;br /&gt;
                set_output = True&lt;br /&gt;
        &lt;br /&gt;
        color = 4 * [0.0]&lt;br /&gt;
        if set_output:&lt;br /&gt;
            for i in range(4):&lt;br /&gt;
                color[i] = (color1[i] + color2[i]) / 2&lt;br /&gt;
        &lt;br /&gt;
        self.output.Color = color&lt;br /&gt;
&lt;br /&gt;
__node__ = BooleanNode&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Color randomizer ===&lt;br /&gt;
[[Image:Pynode-random.png|right|thumb|Example output of randomizer node.[[http://wiki.blender.org/uploads/a/a9/Pynode-random.blend .blend]]]]&lt;br /&gt;
This script just randomizes the color. This is practically the same script as the one seen in the [[Dev:2.4/Py/Nodes/API|API]].&lt;br /&gt;
{{clr}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from Blender import Node&lt;br /&gt;
from Blender.Noise import random&lt;br /&gt;
&lt;br /&gt;
class RandomNode(Node.Scripted):&lt;br /&gt;
    def __init__(self, sockets):&lt;br /&gt;
        col = Node.Socket('Color', val = 4*[1.0])&lt;br /&gt;
        sockets.input = [col]&lt;br /&gt;
        sockets.output = [col]&lt;br /&gt;
&lt;br /&gt;
    def __call__(self):&lt;br /&gt;
        self.output.Color = map(lambda x: x * random(), self.input.Color)&lt;br /&gt;
&lt;br /&gt;
__node__ = RandomNode&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Eight parts ===&lt;br /&gt;
[[Image:Pynode-eightparts.png|right|thumb|Example output of eight parts node.[[http://wiki.blender.org/uploads/7/7a/Pynode-eightpart.blend .blend]]]]&lt;br /&gt;
This script paints the eight segments of vector space in given colors.&lt;br /&gt;
{{clr}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from Blender import Node&lt;br /&gt;
&lt;br /&gt;
class EightPartNode(Node.Scripted):&lt;br /&gt;
    def __init__(self, sockets):&lt;br /&gt;
        vector = Node.Socket('Vector', val = 3*[1.0])&lt;br /&gt;
        colors = []&lt;br /&gt;
        &lt;br /&gt;
        for i in range(1, 9):&lt;br /&gt;
            colors.append(Node.Socket('col' + str(i), val = 4*[1.0]))&lt;br /&gt;
        &lt;br /&gt;
        sockets.input = [vector] + colors&lt;br /&gt;
        sockets.output = [Node.Socket('col', val = 4*[1.0])]&lt;br /&gt;
&lt;br /&gt;
    def __call__(self):&lt;br /&gt;
        tex_coords = self.input.Vector&lt;br /&gt;
        &lt;br /&gt;
        if tex_coords[0] &amp;gt; 0.0:&lt;br /&gt;
            if tex_coords[1] &amp;gt; 0.0:&lt;br /&gt;
                if tex_coords[2] &amp;gt; 0.0:&lt;br /&gt;
                    self.output.col = self.input.col1&lt;br /&gt;
                else:&lt;br /&gt;
                    self.output.col = self.input.col2&lt;br /&gt;
            else:&lt;br /&gt;
                if tex_coords[2] &amp;gt; 0.0:&lt;br /&gt;
                    self.output.col = self.input.col3&lt;br /&gt;
                else:&lt;br /&gt;
                    self.output.col = self.input.col4&lt;br /&gt;
        else:&lt;br /&gt;
            if tex_coords[1] &amp;gt; 0.0:&lt;br /&gt;
                if tex_coords[2] &amp;gt; 0.0:&lt;br /&gt;
                    self.output.col = self.input.col5&lt;br /&gt;
                else:&lt;br /&gt;
                    self.output.col = self.input.col6&lt;br /&gt;
            else:&lt;br /&gt;
                if tex_coords[2] &amp;gt; 0.0:&lt;br /&gt;
                    self.output.col = self.input.col7&lt;br /&gt;
                else:&lt;br /&gt;
                    self.output.col = self.input.col8&lt;br /&gt;
&lt;br /&gt;
__node__ = EightPartNode&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Invert color ===&lt;br /&gt;
[[Image:Pynode-invert.png|right|thumb|Example output of invert color node.[[http://wiki.blender.org/uploads/5/5f/Pynode-invert.blend .blend]]]]&lt;br /&gt;
This script inverts the given color. Basically this is just a reimplementation of the invert node provided with Blender.&lt;br /&gt;
{{clr}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang = &amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from Blender import Node&lt;br /&gt;
&lt;br /&gt;
class InvertNode(Node.Scripted):&lt;br /&gt;
    def __init__(self, sockets):&lt;br /&gt;
        sockets.input = [Node.Socket('Color', val = 4*[1.0])]&lt;br /&gt;
        sockets.output = [Node.Socket('Color', val = 4*[1.0])]&lt;br /&gt;
&lt;br /&gt;
    def __call__(self):&lt;br /&gt;
        self.output.Color = map(lambda x: 1.0 - x, self.input.Color)&lt;br /&gt;
&lt;br /&gt;
__node__ = InvertNode&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Script]]&lt;/div&gt;</summary>
		<author><name>wiki&gt;Mindrones bot</name></author>
		
	</entry>
</feed>