def checkSurfaceMask(context,cellSize,gridResolution,tileSize,maskResolution):
def calculateOverlap(cellSize,gridResolution,tileSize,maskResolution):
def roundToInt( x ):
return floor(x + 0.5)
def nearlyInt( x, i ):
return (abs( x - i ) < 0.000001)
def check( x ):
return nearlyInt(x, roundToInt( x ))
terrainSize = cellSize * gridResolution
multiplier = 1
bestDist = 1000000
bestMult = -1
for i in range(0,8):
landGrid = multiplier * cellSize
dist = abs(40.0 - landGrid)
if dist < bestDist:
bestDist = dist
bestMult = multiplier
multiplier *= 2
subDiv = bestMult
m_landGrid = subDiv * cellSize #land grid cell size or _landGrid
totalLandGrids = floor( terrainSize / m_landGrid ) #land grid size or _landRange
m_gridSize = subDiv * totalLandGrids #terrain grid size or _terrainRange
m_width = m_height = m_gridSize * cellSize #final terrain size
defaultOverlap = 16 # minimum overlap
tileUsable = int(tileSize) - defaultOverlap
tileUsableMeters = maskResolution * tileUsable
segmentLGCs = floor( tileUsableMeters / m_landGrid )
segmentLGCs -= segmentLGCs % 4
segmentMeters = segmentLGCs * m_landGrid
segmentPixels = segmentMeters / maskResolution
actualOverlap = int(tileSize) - segmentPixels
tilesInRow = ceil( m_width / segmentMeters )
return actualOverlap, tilesInRow
from cv2 import imread as cv2imread, imwrite as cv2imwrite
surfaceMask = cv2imread(context.scene.checkSurfaceMaskPath,1)
maskWidth = maskHeight = int((cellSize * gridResolution) / maskResolution)
rgb = zeros((maskWidth,maskHeight,3), uint8)
alpha = zeros((maskWidth,maskHeight,1), uint8)
actualOverlap, tilesInRow = calculateOverlap(cellSize,gridResolution,tileSize,maskResolution)
font = cv2.FONT_HERSHEY_DUPLEX
print(actualOverlap, tilesInRow)
评论列表
文章目录