【Houdini】Error 234:报错节点无法显示错误详情

报错内容

点击报错节点的感叹号时,无法正常显示错误详情,而是弹出一个Houdini Console,这是python的utf-8问题。

File "C:\PROGRA~1\SIDEEF~1\HOUDIN~1.351\python27\lib\site-packages\pkg_resources.py", line 425, in __init__
    self.add_entry(entry)
  File "C:\PROGRA~1\SIDEEF~1\HOUDIN~1.351\python27\lib\site-packages\pkg_resources.py", line 440, in add_entry
    for dist in find_distributions(entry, True):
  File "C:\PROGRA~1\SIDEEF~1\HOUDIN~1.351\python27\lib\site-packages\pkg_resources.py", line 1700, in find_on_path
    for entry in os.listdir(path_item):
WindowsError: [Error 234] : 'c:\\users\\dududu\\*.*'

解决方法

  1. 确认Houdini安装路径无中文
  2. 找到Houdin
import random ##caculate points node = hou.pwd() geo = node.geometry() points = geo.points() ## patterns points node2 = node.input(1) geo2 = node2.geometry() blocksPoints=geo2.points() ##ports points node3 = node.input(2) geo3 = node3.geometry() portPoints = geo3.points() neighbors={} types={} maxAttempts=node.parm("../maxAttempts").eval() seed =node.parm("../seed").eval() for i,pt in enumerate(points): neighbors[i]=pt.attribValue("neighbors") types[i]=pt.attribValue("type") jointDirection = ((1,0,0),(-1,0,0),(0,1,0),(0,-1,0),(0,0,1),(0,0,-1)) ignoredConnectors=["X","In"] patternFrequencies = [] patternGroup = [] allPatterns = [] patternPriority=[] patternRotate={} patternConnectors={} numUniquePattern = 0 connectorPort={} outputCube={} entropyCube={} allowedAdjacencies={} def FetchPatternsFromDataTable(PatternPoints): global numUniquePattern patterns = [] for i,pt in enumerate(PatternPoints): freq = pt.attribValue("freq") group = pt.attribValue("group") name = pt.attribValue("name") priority = pt.attribValue("priority") rotate = pt.attribValue("rotate") if rotate ==1: name+="_0" patternConnectors[name]=list(set() for dir in range(len(jointDirection))) for j in range(6): connector = pt.attribValue("dir_"+ str(j)) patternConnectors[name][j] = connector.split(',') patterns.append(name) patternFrequencies.append(freq) patternGroup.append(group) patternPriority.append(priority) patternRotate[name]=rotate numUniquePattern+=1 return patterns def FectchPortFromDataTable(portPoints): for i, pt in enumerate(portPoints): name = pt.attribValue("name") port = pt.attribValue("port") connectorPort[name]=port.split(',') def PatternRotation(): global numUniquePattern rotList=[5,4,2,3,0,1] newPatterns=[] for index,pattern in enumerate(allPatterns): if patternRotate[pattern]==0:continue tempConnector = patternConnectors[pattern] tempFrequency = patternFrequencies[index] tempGroup = patternGroup[index] tempPriority=patternPriority[index] for i in range(3): newConnector=[] newPattern = pattern[:-1] +str(i+1) for dir in rotList: connectors = [a for a in tempConnector[dir]] for index,connector in enumerate(connectors): if connector.startswith("UD"): connectors[index]=connector[:-1]+str(i+1) newConnector.append(connectors) newPatterns.append(newPattern) tempConnector=newConnector patternFrequencies.append(tempFrequency) patternGroup.append(tempGroup) patternPriority.append(tempPriority) patternConnectors[newPattern]=newConnector for newAddPattern in newPatterns: allPatterns.append(newAddPattern) numUniquePattern+=1 def InitializeWfcCube(): for i,pt in enumerate(points): curNeighborPoints = neighbors[i] validPatterns=[p for p in allPatterns] invalidPatterns=set() for neighborIndex ,neighborPoint in enumerate(curNeighborPoints): if neighborPoint==-1: for pattern in allPatterns: if "In" in patternConnectors[pattern][neighborIndex]: invalidPatterns.add(pattern) else: for pattern in allPatterns: if "X" in patternConnectors[pattern][neighborIndex]: invalidPatterns.add(pattern) for p in validPatterns: orderId=allPatterns.index(p) if types[i] !="none" and patternGroup[orderId] !=types[i]: invalidPatterns.add(p) for p in invalidPatterns: if p in validPatterns: validPatterns.remove(p) outputCube[i]=[p for p in validPatterns] def InitializeEntropyCube(): for i,pt in enumerate(points): entropyCube[i]=len(outputCube[i]) def CaculateAdjacencies(): for i,p in enumerate(allPatterns): allowedAdjacencies[p]= tuple(set() for dir in range (len(jointDirection))) ##allowedAdjacencies[name][0]=(name1,name2,....) for patternOne in range(numUniquePattern): for patternTwo in range(numUniquePattern): patternOneLeft = patternConnectors[allPatterns[patternOne]][0] pattenTwoRight = patternConnectors[allPatterns[patternTwo]][1] patternOneUp = patternConnectors[allPatterns[patternOne]][2] patternTwoDown = patternConnectors[allPatterns[patternTwo]][3] patternOneFront = patternConnectors[allPatterns[patternOne]][4] patternTwoBack = patternConnectors[allPatterns[patternTwo]][5] for leftConnector in patternOneLeft: for rightConnector in pattenTwoRight: if leftConnector in ignoredConnectors or rightConnector in ignoredConnectors: continue if leftConnector in connectorPort[rightConnector]: allowedAdjacencies[allPatterns[patternTwo]][1].add(allPatterns[patternOne]) allowedAdjacencies[allPatterns[patternOne]][0].add(allPatterns[patternTwo]) if rightConnector in connectorPort[leftConnector]: allowedAdjacencies[allPatterns[patternTwo]][1].add(allPatterns[patternOne]) allowedAdjacencies[allPatterns[patternOne]][0].add(allPatterns[patternTwo]) for upConnector in patternOneUp: for downConnector in patternTwoDown: if upConnector in ignoredConnectors or downConnector in ignoredConnectors: continue if upConnector in connectorPort[downConnector]: allowedAdjacencies[allPatterns[patternTwo]][3].add(allPatterns[patternOne]) allowedAdjacencies[allPatterns[patternOne]][2].add(allPatterns[patternTwo]) if downConnector in connectorPort[upConnector]: allowedAdjacencies[allPatterns[patternTwo]][3].add(allPatterns[patternOne]) allowedAdjacencies[allPatterns[patternOne]][2].add(allPatterns[patternTwo]) for forntConnector in patternOneFront: for backConnector in patternTwoBack: if forntConnector in ignoredConnectors or backConnector in ignoredConnectors: continue if forntConnector in connectorPort[backConnector]: allowedAdjacencies[allPatterns[patternTwo]][5].add(allPatterns[patternOne]) allowedAdjacencies[allPatterns[patternOne]][4].add(allPatterns[patternTwo]) if backConnector in connectorPort[forntConnector]: allowedAdjacencies[allPatterns[patternTwo]][5].add(allPatterns[patternOne]) allowedAdjacencies[allPatterns[patternOne]][4].add(allPatterns[patternTwo]) def Propagation(point): toUpdatePoints={point} loop =0 loopNum=2000 while len(toUpdatePoints) !=0 and loop <loopNum: pointNum = toUpdatePoints.pop() for dirIndex,direction in enumerate(jointDirection): neighborIndexValid = True neighborPointNum=neighbors[pointNum][dirIndex] if neighborPointNum <0: neighborIndexValid=False if neighborPointNum in entropyCube and neighborIndexValid: allowedNeighborPattern =set() for pattern in outputCube[pointNum]: for allowedPattern in allowedAdjacencies[pattern][dirIndex]: allowedNeighborPattern.add(allowedPattern) containedNeighborPattern=outputCube[neighborPointNum] if not set(containedNeighborPattern).issubset(allowedNeighborPattern): commonPattern=[pattern for pattern in allowedNeighborPattern if pattern in containedNeighborPattern] if len(commonPattern)==0: return False,1 outputCube[neighborPointNum]=commonPattern entropyCube[neighborPointNum]=len(commonPattern) toUpdatePoints.add(neighborPointNum) loop+=1 return True,0 def setPatternNameToPoint(point,pattern): outputCube[point]=[pattern] del entropyCube[point] points[point].setAttribValue('name',pattern) def Main(): loop=0 loopNum=2000 Running= True while Running and loop<loopNum: lowestEntropyPoint=min(entropyCube,key = entropyCube.get) maxPriority=0 for p in outputCube[lowestEntropyPoint]: index= allPatterns.index(p) curPriority=patternPriority[index] if curPriority>maxPriority: maxPriority=curPriority targetPatterns=[] targetFreq=[] for p in outputCube[lowestEntropyPoint]: index = allPatterns.index(p) curPriority = patternPriority[index] if curPriority==maxPriority: targetPatterns.append(p) targetFreq.append(patternFrequencies[index]) patternToChoose=[] for i,p in enumerate(targetPatterns): for freq in range(targetFreq[i]): patternToChoose.append(p) randPattern = random.choice(patternToChoose) setPatternNameToPoint(lowestEntropyPoint,randPattern) Running,Error= Propagation(lowestEntropyPoint) if len(entropyCube)==0: Running = False loop+=1 if Error ==1: return False else: return True allPatterns= FetchPatternsFromDataTable(blocksPoints) FectchPortFromDataTable(portPoints) PatternRotation() CaculateAdjacencies() Error =0 Skip = False for key in outputCube: if len(outputCube[key]) == 0: Skip = True Error= 1 print(outputCube[key]) if not Skip: for i in range(0,maxAttempts): random.seed(seed+i) InitializeWfcCube() InitializeEntropyCube() Success=Main() if Success: Error =0 break else: Error= 1 # allPatterns=FetchPatternsFromDataTable(blocksPoints) # PatternRotation() # print(numUniquePattern) # FetchPatternsFromDataTable(blocksPoints) # connectorNEW=[] # connector = patternConnectors['wall_1b_400x350x200_0'] # rotList=[5,4,2,3,0,1] # for dir in rotList: # connectors = [a+"dd" for a in connector[dir]] # connectorNEW.append(connectors) # print(connectorNEW) # FetchPatternsFromDataTable(blocksPoints) # print(numUniquePattern) 这段代码报错 Python error: Traceback (most recent call last): File "", line 303, in File "", line 178, in CaculateAdjacencies KeyError: 'In ' 请问怎么解决?
最新发布
07-10
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值