이 코드를 노드로 어떻게 변환합니까?
그래서 여기에 내가 가지고있는 거칠기 텍스처의 리매핑 값으로 사용해야하는 vector4 값 [-4.571429, 12.142858, 0.35, 0.35] 목록이 있습니다. 그러나 여기에 제 친구는 노드를 전혀 모르고 코드 만 알 수 있습니다. 나를 위해 그 반대입니다. 그러나 그는 내가 그것을 해결할 수있는 기회의 노드 그룹으로 바꾸려고 시도하기 위해 이것을주었습니다.
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);
그가 나에게 준 메모는 다음과 같습니다. "플로트 0과 플로트 1은 -4, 12와 같은 값입니다. remap_input은 다시 매핑되는 이미지입니다. 최소 및 최대는 클램프 값입니다. 여러 셰이더 노드에서 런타임에 float 값으로 모두 발생합니다. 우리는 코드를 절약하기 위해 4 개의 float를 모두 vec4로 결합합니다. "
내가 이것에 대해 얻을 수있는 모든 도움은 분명히 감사 할 것입니다.
답변
귀하의 질문은 매우 구체적입니다. 그러나 코드를 노드로 변환하는 것은 정확히 Dynamic Maths Expression / Node Expressions가 만들어진 것입니다.https://github.com/baldingwizard/Blender-Addons/wiki/Dynamic-Maths-Expression).
애드온을 설치하면 노드 '추가'메뉴에 새로운 수학 표현식 옵션이 있어야합니다.
새 텍스트 블록을 만들고 다음 코드를 붙여 넣습니다.
outputs(output)
xform[] = combine(zero, one - zero)
in_value = remap_input
output = combine(clip(xform[x] + xform[y] * in_value), clip(min), clip(max))
(참고 : 위의 텍스트는 거의 한 줄씩 샘플 코드에서 직접 번역되었습니다.)
텍스트 블록에 의미있는 이름을 지정하고 (예 : 'mycode') 노드 편집기로 이동하여 텍스트 TEXT:<name>( <name>텍스트 블록의 이름 ( 예 : 'TEXT : mycode')로 대체) 와 추가 기능으로 새 수학 표현식을 추가합니다. 코드를 해석하고 코드를 구현하기위한 관련 노드를 포함하는 새 노드 그룹을 생성합니다.
분명히 코더 친구는 애드온이 해석 할 올바른 구문으로 코드를 생성해야합니다.