Fixed issue #1805 where point clouds which had their material inherited from higher up in the hierarchy would not display vertex colors

This commit is contained in:
AlexandruPopovici
2023-09-28 12:13:26 +03:00
parent 39a6bf18d3
commit 7aeeb987c3
3 changed files with 19 additions and 12 deletions
+3 -1
View File
@@ -286,7 +286,9 @@ const getStream = () => {
// 'https://speckle.xyz/streams/46caea9b53/commits/71938adcd1'
// 'https://speckle.xyz/streams/2f9f2f3021/commits/75bd13f513'
// 'https://speckle.xyz/streams/25d8a162af/commits/6c842a713c'
'https://speckle.xyz/streams/76e3acde68/commits/0ea3d47e6c'
// 'https://speckle.xyz/streams/76e3acde68/commits/0ea3d47e6c'
// Point cloud
'https://speckle.xyz/streams/b920636274/commits/8df6496749'
)
}
@@ -67,20 +67,24 @@ export default class Materials {
private defaultGradientTextureData: ImageData = null
public static renderMaterialFromNode(node: TreeNode): RenderMaterial {
if (!node) return null
public static renderMaterialFromNode(
materialNode: TreeNode,
geometryNode: TreeNode
): RenderMaterial {
if (!materialNode) return null
let renderMaterial: RenderMaterial = null
if (node.model.raw.renderMaterial) {
if (materialNode.model.raw.renderMaterial) {
renderMaterial = {
id: node.model.raw.renderMaterial.id,
color: node.model.raw.renderMaterial.diffuse,
id: materialNode.model.raw.renderMaterial.id,
color: materialNode.model.raw.renderMaterial.diffuse,
opacity:
node.model.raw.renderMaterial.opacity !== undefined
? node.model.raw.renderMaterial.opacity
materialNode.model.raw.renderMaterial.opacity !== undefined
? materialNode.model.raw.renderMaterial.opacity
: 1,
roughness: node.model.raw.renderMaterial.roughness,
metalness: node.model.raw.renderMaterial.metalness,
vertexColors: node.model.raw.colors && node.model.raw.colors.length > 0
roughness: materialNode.model.raw.renderMaterial.roughness,
metalness: materialNode.model.raw.renderMaterial.metalness,
vertexColors:
geometryNode.model.raw.colors && geometryNode.model.raw.colors.length > 0
}
}
return renderMaterial
@@ -82,7 +82,8 @@ export class RenderTree {
speckleType: GeometryConverter.getSpeckleType(node.model),
geometry: geometryData,
renderMaterial: Materials.renderMaterialFromNode(
renderMaterialNode || displayStyleNode
renderMaterialNode || displayStyleNode,
node
),
/** Line-type geometry can also use a renderMaterial*/
displayStyle: Materials.displayStyleFromNode(