添加了 Python 函数,用于保存 UV 布局的快照、缩放、旋转、平移和移除 UV、切割 UV 边、仅设置深度过程以及显示边界框。
在 vrdGeometryNode
中添加了 setTexCoords 方法,用于移除 UV 集。
在 vrUVService
中添加了 triplanarProjectionFitSize()、planarProjectionFitSize() 和 cylyndricalProjectionFitSize(),用于将特定(平面/三平面/圆柱)投影拟合到任意对象,并启用任意节点的简单批处理。
为“高级 OpenGL 设置”的“仅深度过程”功能添加了 setDepthOnlyPass
函数。它启用“仅深度过程”的切换。setDepthOnlyPass
采用类似于 setBackfaceCulling
的参数,例如 SWITCH_TOGGLE
、SWITCH_ON
或 SWITCH_OFF
以及 True
或 False
。当前状态没有查询函数。
添加了 vrUVService.cutAlongSeams(),用于使用“自动接缝选择”中的值沿选定接缝切割 UV 边。
vrUVService.
cutAlongSeams
(nodes, settings, uvSet)使用给定节点上的给定接缝设置执行剪切。
有机剪切示例:
geometryNodes = [vrNodeService.findNode("Box")]
settings = vrdUVSeamSettings()
settings.setMode(vrUVTypes.SeamMode.Organic)
settings.setOrganicUsePipesCutter(True)
settings.setOrganicSegmentationAmount(0)
vrUVService.cutAlongSeams(geometryNodes, settings, vrUVTypes.UVSet.MaterialUVSet)
制造剪切示例:
geometryNodes = [vrNodeService.findNode("Box")]
settings = vrdUVSeamSettings()
settings.setMode(vrUVTypes.SeamMode.Manufactured)
settings.setManufacturedAngle(45)
settings.setManufacturedAreaRatio(0.5)
vrUVService.cutAlongSeams(geometryNodes, settings, vrUVTypes.UVSet.MaterialUVSet)
烘焙剪切示例:
geometryNodes = [vrNodeService.findNode("Box")]
settings = vrdUVSeamSettings()
settings.setMode(vrUVTypes.SeamMode.Baking)
settings.setBakingAngle(45)
settings.setBakingSizeOfMinPatch(0)
vrUVService.cutAlongSeams(geometryNodes, settings, vrUVTypes.UVSet.MaterialUVSet)
参数: |
|
---|
添加了 vrUVService.rotateUV,用于围绕给定中心旋转 UV。
要围绕给定中心旋转 UV,请尝试以下操作:
center = QVector2D(0,0)
angle = 25
vrUVService.rotateUV(nodes, center, angle, vrUVTypes.UVSet.MaterialUVSet)
vrUVService.
rotateUV
(nodes, center, angleDegree, uvSet)围绕给定中心旋转给定节点的 UV。
将所有材质 UV 旋转 90 度的示例:
geometryNodes = [vrNodeService.findNode("Box")]
center = QVector2D(0.5,0.5)
angle = 90
vrUVService.rotateUV(geometryNodes, center, angle, vrUVTypes.UVSet.MaterialUVSet)
参数: |
|
---|
添加了 vrUVService.scaleUV 和 vrUVService.translateUV 以缩放/翻转以及平移 UV。
要在给定中心翻转 UV,请尝试以下命令:
center = QVector2D(0,0)
scaleU = 1
scaleV = -1
vrUVService.scaleUV(nodes, center, scaleU, scaleV, vrUVTypes.UVSet.MaterialUVSet)
要在给定中心平移 UV,请尝试以下操作:
translateU = 0.2
translateV = 0.1
vrUVService.translateUV(nodes, translateU, translateV, vrUVTypes.UVSet.MaterialUVSet)
vrUVService.
scaleUV
(nodes, center, uScale, vScale, uvSet)使用给定中心缩放给定节点的 UV。
翻转所有材质 UV 的示例:
geometryNodes = [vrNodeService.findNode("Box")]
center = QVector2D(0.5,0.5)
uScale = -1
vScale = 1
vrUVService.scaleUV(geometryNodes, center, uScale, vScale, vrUVTypes.UVSet.MaterialUVSet)
参数: |
|
---|
vrUVService.
translateUV
(nodes, du, dv, uvSet)平移给定节点的 UV。
平移所有材质 UV 的示例:
geometryNodes = [vrNodeService.findNode("Box")]
du = 0.2
dv = 0.2
vrUVService.translateUV(geometryNodes, du, dv, vrUVTypes.UVSet.MaterialUVSet)
参数: |
|
---|
在 vrUVService 中添加了 saveUVSnapshot(与在“延伸 UV 编辑器”中一样)。它将 UV 布局的快照另存为图像文件。
如果宽度和高度不同,则输出图像将扭曲。
vrUVService.
saveUVSnapshot
(nodes, path, width=1024, height=1024, uvSet=vrUVTypes.MaterialUVSet, style=vrUVTypes.ShowWireframe, mode=vrUVTypes.SnapshotMode.ZeroToOneSpace, customSpace=QVector4D())将 UV 布局的快照另存为图像文件。
示例:
geometryNodes = [vrNodeService.findNode("Box")]
vrUVService.saveUVSnapshot(geometryNodes,
"c:/vred-snapshots/uv.png",
512, 512,
vrUVTypes.UVSet.MaterialUVSet,
vrUVTypes.ShowBorders | vrUVTypes.ShowWireframe)
参数: |
|
---|
添加了 getBoundingBox 和 getWorldBoundingBox,用于显示场景中对象的边界体积(长方体)。
要获取多个对象的组合边界框,请尝试以下命令:
def getWorldCenter(geometryNodes):
bb = vrdBoundingBox()
for geometryNode in geometryNodes:
bb.extendBy(geometryNode.getWorldBoundingBox())
return bb.getCenter()
vrdNode.
getWorldBoundingBox
()返回节点(包括其子节点)的世界边界框。
合并多个边界框的示例:
def getWorldCenter(nodes):
bb = vrdBoundingBox()
for node in nodes:
bb.extendBy(node.getWorldBoundingBox())
return bb.getCenter()
# Find all nodes whose name starts with "Box". nodes = vrNodeService.findNodes("Box*", True) # Calculate the bounding box center of these nodes center = getWorldCenter(nodes) # Print the result print(center)
返回值: | 节点的世界边界框 |
---|---|
返回值类型: | vrdBoundingBox |