Skip to main content
Participant
December 14, 2021
Answered

Curve points edit in Substance Designer

I'm tryiing to edid curve points in SD but the whole thing just keep crashing after i run this piece. Any suggestions ? Thank you in advance.

 

import sd
from sd.api.sdvaluefloat import *
from sd.api.sdvaluefloat2 import *
from sd.api.sdvaluebool import *
from sd.api.sdvaluecolorrgba import *
from sd.api.sdvaluearray import *
from sd.api.sdvaluestruct import *
from sd.api.sdtypestruct import *
from sd.api.sdapplication import *
from sd.api.sdproperty import *

ctx = sd.getContext()
app = ctx.getSDApplication()
uiMgr = app.getQtForPythonUIMgr()
graph = uiMgr.getCurrentGraph()
nodes = graph.getNodes()
node = nodes.getItem(0)


curve_struct = SDTypeStruct.sNew('sbs::compositing::curve_key')

point = SDValueStruct.sNew(curve_struct)
point.setPropertyValueFromId('position', SDValueFloat2.sNew(float2(0,0)))
point.setPropertyValueFromId('isLocked', SDValueBool.sNew(True))
point.setPropertyValueFromId('left', SDValueFloat2.sNew(float2(0,0)))
point.setPropertyValueFromId('isLeftBroken', SDValueBool.sNew(True))
point.setPropertyValueFromId('right', SDValueFloat2.sNew(float2(0.1,0)))
point.setPropertyValueFromId('isRightBroken', SDValueBool.sNew(True))

point2 = SDValueStruct.sNew(curve_struct)
point2.setPropertyValueFromId('position', SDValueFloat2.sNew(float2(1.0,1.0)))
point2.setPropertyValueFromId('isLocked', SDValueBool.sNew(True))
point2.setPropertyValueFromId('left', SDValueFloat2.sNew(float2(0.566,0.748)))
point2.setPropertyValueFromId('isLeftBroken', SDValueBool.sNew(False))
point2.setPropertyValueFromId('right', SDValueFloat2.sNew(float2(1,1)))
point2.setPropertyValueFromId('isRightBroken', SDValueBool.sNew(False))


curveArray = SDValueArray.sNew(curve_struct, 0)
curveArray.pushBack(point)
curveArray.pushBack(point2)

print(curveArray.getSize())

for i in range(0, curveArray.getSize()):
print(curveArray.getItem(i).getPropertyValueFromId('position').get())
print(curveArray.getItem(i).getPropertyValueFromId('isLocked').get())
print(curveArray.getItem(i).getPropertyValueFromId('left').get())
print(curveArray.getItem(i).getPropertyValueFromId('isLeftBroken').get())
print(curveArray.getItem(i).getPropertyValueFromId('right').get())
print(curveArray.getItem(i).getPropertyValueFromId('isRightBroken').get())
print('-------------------------------------')

 

node.setInputPropertyValueFromId('curveluminance', curveArray)

This topic is closed to new replies. Start a new post to keep the conversation going.
davescm
davescmCorrect answer
Community Expert
December 14, 2021

Have you tried the latest version (11.3.1) released today? There is a fix listed for a crash with the curves node:

 

https://substance3d.adobe.com/documentation/sddoc/all-changes-188973131.html

 

Dave

2 replies

davescm
Community Expert
davescmCommunity ExpertCorrect answer
Community Expert
December 14, 2021

Have you tried the latest version (11.3.1) released today? There is a fix listed for a crash with the curves node:

 

https://substance3d.adobe.com/documentation/sddoc/all-changes-188973131.html

 

Dave

Translate
Luca Giarrizzo
Community Manager
Community Manager
December 17, 2021

Hello @edward_woopie and @davescm,

 

Indeed, the fix in our latest bugfix release (11.3.1) mentioned by Dave fixes exactly this crash!

 

Best regards.

 

Translate
Luca Giarrizzo | Quality Engineer - Substance 3D Designer | Adobe