como você converte este código em nós?

Sep 10 2020

Portanto, tenho uma lista de valores de vetor4 aqui [-4,571429, 12,142858, 0,35, 0,35] que precisam ser usados ​​como valores de remapeamento para uma textura de rugosidade que tenho. Mas aqui está o problema, meu amigo não conhece nós, apenas código. Vice-versa para mim. Mas ele me deu isso para tentar transformá-lo em um grupo de nós, no caso de eu conseguir resolver:

float remap_with_clamp(float remap_input, float min, float max, float zero, float one)

            {
                            vec2 xform = vec2(zero, one - zero);

                            float in_value = remap_input;
                            return clamp(xform.x + xform.y * in_value, min, max);

Uma observação que ele também me deu é: "Seu float zero e float um têm valores como -4, 12. O remap_input seria a imagem que está sendo remapeada. O mínimo e o máximo são os valores de fixação. está tudo acontecendo em vários nós de sombreador como um valor flutuante em tempo de execução, combinamos todos os 4 flutuantes em um vec4 para economizar no código. "

Qualquer ajuda que eu puder conseguir com certeza será apreciada

Respostas

3 RichSedman Sep 10 2020 at 14:10

Sua pergunta é muito específica. No entanto, converter o código em nós é precisamente para o que a Dynamic Maths Expression / Node Expressions foi feita (baixe-a dehttps://github.com/baldingwizard/Blender-Addons/wiki/Dynamic-Maths-Expression)

Depois de instalar o add-on, você deve ter uma nova opção de Expressão matemática no menu 'Adicionar' do nó.

Crie um novo bloco de texto e cole o seguinte código:

outputs(output)

xform[] = combine(zero, one - zero)

in_value = remap_input
                            
output = combine(clip(xform[x] + xform[y] * in_value), clip(min), clip(max))

(NOTA: O texto acima é traduzido diretamente do seu código de amostra, quase linha por linha)

Nomeie o bloco de texto com algo significativo (por exemplo, 'meu código'), vá para o Editor de Nó e adicione uma nova Expressão matemática com o texto TEXT:<name>(substituindo <name>pelo nome do seu bloco de texto - por exemplo, 'TEXTO: meu código') e o add-on irá interpretar seu código e gerar um novo grupo de nós contendo os nós relevantes para implementar o código.

Obviamente, seu amigo codificador precisará produzir código na sintaxe correta para o add-on interpretar.