Commit 8a33c63b authored by Bruno Thomazi Zanette's avatar Bruno Thomazi Zanette 🎱
Browse files

comentando funções

parent 6cd414fc
......@@ -3,13 +3,10 @@ import time
from math import cos
'''
Código rodado em background que transforama dados do corsika modelos 3d de curvas,
a animação das curvas são salvar em formato png utilizando o comando:
Código rodado em background que transforama dados do corsika em modelos 3d de curvas utilizando blender 3.0,
a animação das curvas é salva em formato png, para transformar em mp4 pode-se usar (no linux) ffmpeg:
para transformar em mp4 pode-se usar (no linux) ffmpeg:
blender -b -P blender_visu_script.py -o /home/bruno/Desktop/rend/img###.png -a
blender -b -P blender_visu_script.py -o /home/img###.png -a
cat *.png | ffmpeg -f image2pipe -r 30 -i - output.mp4 -y
......@@ -19,11 +16,14 @@ rm *.png
# ARGUMENTOS
arquivos_nome = ["EDrezultate1","EDrezultate2","EDrezultate3",] # nome txt com dados
limite = 50000000 # -1 para ler todos os dados dos arquivos
arquivos_nome = ["EDrezultate2",] # nome txt com dados
limite = -1
# limite = (4 + 1) * 100 # -1 para ler todos os dados dos arquivos
def make_curve(points,loop2):
'''
Funcao que cria curva no blender
'''
# create the Curve Datablock
curveData = bpy.data.curves.new(f'myCurve{loop2}', type='CURVE')
......@@ -50,42 +50,56 @@ def make_curve(points,loop2):
bpy.ops.object.shade_smooth()
def remove_materials_objects():
'''
Função que remove todos materiais, objetos e curvas
'''
for material in bpy.data.materials: #remove materiais existentes
bpy.data.materials.remove(material)
for object in bpy.data.objects: # remove todos objetos
bpy.data.objects.remove(object)
for curva in bpy.data.curves:
for curva in bpy.data.curves: # remove todas curvas
bpy.data.curves.remove(curva)
def create_material(loop):
bpy.data.materials.new(name="base"+f'{loop}') #Cria material
'''
Função que cria novo material
mat = bpy.data.materials[f'base{loop}']
Argumento loop representa o arquivo que está sendo usado
'''
bpy.data.materials.new(name="base"+f'{loop}') # cria material
mat = bpy.data.materials[f'base{loop}'] # seleciona material criado
mat.use_nodes = True
Princi = mat.node_tree.nodes['Principled BSDF'] #apaga o nodo Principled BSDF
Princi = mat.node_tree.nodes['Principled BSDF'] # nodo Principled BSDF
if loop == 0:
if loop == 0: # primeiro arquivo cor vermelha
Princi.inputs['Base Color'].default_value = (1.0, 0.028571, 0.021429, 0.4) # R G B Alpha
elif loop == 1:
elif loop == 1: # segundo arquivo cor verde
Princi.inputs['Base Color'].default_value = (0.028571, 1, 0.021429, 0.4) # R G B Alpha
elif loop == 2:
elif loop == 2: # terceiro arquivo cor azul
Princi.inputs['Base Color'].default_value = (0.028571, 0.021429, 1, 0.4) # R G B Alpha
else:
else: # mais arquivos tem a cor decidida por cos()
Princi.inputs['Base Color'].default_value = (cos(loop*3.14), 1/cos(loop*3.14), cos(loop*3.14*2), 0.4) # R G B Alpha
Princi.inputs['Roughness'].default_value = 0.445455
Princi.inputs['Specular'].default_value = 0.08636365830898285
def insert_material(loop,loop2):
'''
Função que insere o material loop na curva loop2
'''
mat = bpy.data.materials['base'+f'{loop}']
curva = bpy.data.objects[f'myCurve{loop2}']
curva.data.materials.append(mat)
def anima(t_i,t_f,loop2):
'''
Função responsável pela animação da curva, utiliza somente o tempo final e inicial da curva
'''
if(t_i>t_f): #caso esteja trocado
d= t_f
t_f= t_i
......@@ -104,6 +118,9 @@ def anima(t_i,t_f,loop2):
curva.bevel_factor_mapping_end = 'SPLINE'
def curva(dados):
'''
Funcao que retorna os dados separados em diferentes curvas.
'''
x=[]
xend=[]
dados_new=[]
......@@ -134,32 +151,53 @@ def curva(dados):
return(todas_curvas)
def mesmalinha(inicial_final):
'''
Função que encontra pontos iguais nos dados para serem
classificados como sendo da mesma curva. Também detecta
bifurcação da linha, fazendo as duas linhas serem curvas
diferentes, evitando erros.
'''
linhas=[]
iniciais =[f[0] for f in inicial_final]
finais = [f[1] for f in inicial_final]
k=0
for i,f in inicial_final:
if f in iniciais and i not in finais:
## é o começo de uma linha
if f in iniciais and i not in finais: # nova linha
linhas.append([[i,f]])
continue
count_bif =0
for curva in linhas: # detecta bifurcação
for xi,xf in curva:
if i == xi or i == xf:
count_bif +=1
if count_bif > 1:
linhas.append([[i,f]])
break
if count_bif >1:
break
loop = 0
for curva in linhas:
for curva in linhas: # adiciona curva a uma linha já existente
for xi,xf in curva:
if i == xf:
linhas[loop].append([i,f])
loop+=1
return(linhas)
def inif(li,lf):
'''
função que organiza os dados em [inicial,final]
Funcao que organiza os dados em [inicial,final]
'''
tu=[]
for i in range(0,len(li)):
tu.append([li[i],lf[i]])
return(tu)
##
## CODIGO PRINCIPAL
##
......@@ -167,9 +205,9 @@ def inif(li,lf):
start_time= time.time()
remove_materials_objects()
loop2 = 0
last_frame = 0
loop2 = 0
last_frame = 0 #para encontrar o ultimo frame
for loop,arquivo_nome in enumerate(arquivos_nome):
arquivo = open(arquivo_nome,'r')
......@@ -180,16 +218,14 @@ for loop,arquivo_nome in enumerate(arquivos_nome):
create_material(loop)
# LOOP PRINCIPAL
for curve in dados_curvas:
loop2 += 1
# LOOP PRINCIPAL
pontos =[]
loop2 += 1
pontos =[]
for count,l in enumerate(curve):
## O quanto foi feito
print(count/len(curve)*100)
print(f"{count/len(curve)*100}% linha: {l}") # O quanto foi feito
x=float(l[2])/1000000
y=float(l[3])/1000000
......@@ -200,7 +236,6 @@ for loop,arquivo_nome in enumerate(arquivos_nome):
zend=float(l[8])/1000000
tend=float(l[9])*1000000
pontos.append((x,y,z))
if count == 0:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment