public virtual void updateDistortedMap(PlanarMesh planarMesh = null) { if (lowerLayer != null) { lowerLayer.updateDistortedMap(planarMesh); } }
public override void updateDistortedMap(PlanarMesh planarMesh = null) { if (lowerLayer != null) { lowerLayer.updateDistortedMap(planarMesh); if (colorMap != null) { if (lowerLayer.getColorMap() != null) { if (distortedColorMap == null) { distortedColorMap = new Texture2D(lowerLayer.getColorMap().width, lowerLayer.getColorMap().height); } if (planarMesh == null) { planarMesh = new PlanarMesh(); } drawingOver = true; planarMesh.renderMapOver(colorMap, distortedColorMap, lowerLayer.getColorMap(), 0, getUsedPassesCount() - 1); } if (lowerLayer.getHeightMap() != null) { if (distortedHeightMap == null) { distortedHeightMap = new Texture2D(lowerLayer.getHeightMap().width, lowerLayer.getHeightMap().height); } if (distortedNormalMap == null) { distortedNormalMap = new Texture2D(lowerLayer.getNormalMap().width, lowerLayer.getNormalMap().height); } Color[] combinedHeight = getColorMapPixels(); Color[] lowerHeight = lowerLayer.getHeightMap().GetPixels(); for (int i = 0; i < combinedHeight.Length; i++) { float color = Mathf.Min(1, lowerHeight[i].r + combinedHeight[i].a); combinedHeight[i] = new Color(color, color, color, 1); } distortedHeightMap.SetPixels(combinedHeight); distortedHeightMap.Apply(); StampGenerator.printNormalMap(distortedNormalMap, distortedHeightMap); } setTextures(); } } else if (colorMap != null) { setTextures(); } }
public override void init() { mesh3d = GetComponent <MeshFilter>().mesh; if (item == null) { return; } // generates raytraced maps from 3D object generator = new StampGenerator(item, itemResolution, stampRotation); // raytracing stamp textures from 3D object heightMap = generator.getHeightMap(); normalMap = generator.getNormalMap(); normalMapFromHeight = generator.getNormalMapFromHeight(); edgeMap = generator.getEdgeMap(new Color(.7f, .7f, .72f, 1), 15, 3); // creation of resusable textures that will be used on model distortedHeightMap = new Texture2D(textureResolution, textureResolution); distortedNormalMap = new Texture2D(textureResolution, textureResolution); distortedColorMap = new Texture2D(textureResolution, textureResolution); planarMesh = new PlanarMesh( GetComponent <Transform>(), mesh3d, getArranger(), normalizationSteps, normalizationStrength, showingNormalization, neighbourRadius, detectOverlappingOnAllTriangles, detectOverlappingOnAllEdges, useStrength, alwaysBuildBestMesh); }
public override void updateDistortedMap(PlanarMesh planarMesh = null) { if (block == 1 || block == 3) { return; } if (heightMap == null) { return; } if (multipleArrangers) { planarMesh = null; } if (planarMesh == null) { // prevents calculating mesh update in every layer planarMesh = this.planarMesh; planarMesh.updateMesh(mesh3d); } if (lowerLayer != null) { lowerLayer.updateDistortedMap(planarMesh); } int passShift = getUsedPassesCount() - 3; planarMesh.DEBUG_TRIANGLES = DEBUG_TRIANGLES; if (heightShift && lowerLayer != null && lowerLayer.getHeightMap() != null) { planarMesh.renderDistortedMap(heightMap, distortedHeightMap, lowerLayer.getHeightMap(), 0, passShift); planarMesh.renderDistortedMap(normalMap, distortedNormalMap, lowerLayer.getNormalMap(), 1, passShift); } else { planarMesh.renderDistortedMap(heightMap, distortedHeightMap, new Color(0, 0, 0, 1), 0, passShift); planarMesh.renderDistortedMap(normalMap, distortedNormalMap, new Color(.5f, .5f, 1, 1), 1, passShift); } Color bg = new Color(0, 0, 0, 0); if (DEBUG_TRIANGLES) { bg = new Color(1, 0, 0, 1); } if (lowerLayer != null) { if (lowerLayer.getHeightMap() != null && !heightShift) { // there is LayerDynamic below, we need tom merge into it looking at height of pixels planarMesh.renderDistortedMap(edgeMap, distortedColorMap, bg, 2, passShift); // merge lower layers into distorted maps bool[] mask = getMask(); Color32[] combinedColor = distortedColorMap.GetPixels32(); Color32[] combinedHeight = distortedHeightMap.GetPixels32(); Color32[] combinedNormal = distortedNormalMap.GetPixels32(); Color32[] lowerColor = getLowerLayerColorMapPixels(); Color32[] lowerHeight = getLowerLayerHeightMapPixels(); Color32[] lowerNormal = getLowerLayerNormalMapPixels(); for (int i = 0; i < combinedColor.Length; i++) { if (mask[i]) { combinedColor[i] = lowerColor[i]; combinedHeight[i] = lowerHeight[i]; combinedNormal[i] = lowerNormal[i]; } } distortedColorMap.SetPixels32(combinedColor); distortedColorMap.Apply(); distortedNormalMap.SetPixels32(combinedNormal); distortedNormalMap.Apply(); distortedHeightMap.SetPixels32(combinedHeight); distortedHeightMap.Apply(); } else { // there is LayerStatic below, we can just draw color over it planarMesh.renderDistortedMap(edgeMap, distortedColorMap, lowerLayer.getColorMap(), 2, passShift); } } else { // there is nothing below, we can draw over nothing planarMesh.renderDistortedMap(edgeMap, distortedColorMap, bg, 2, passShift); } setTextures(); if (block == 2) { block++; } }