gempy icon indicating copy to clipboard operation
gempy copied to clipboard

Export to Blender

Open agzimmerman opened this issue 5 years ago • 1 comments

Is your feature request related to a problem? Please describe. We want easily to export models to blender

Describe the solution you'd like A function of gempy as gempy.export_to_blender A python script in blender that takes what the gempy function exports and renders it

Additional context I have already a blender script for blender 2.7

import bpy
import numpy as np

#bpy.ops.object.mode_set(mode='OBJECT')

bpy.ops.object.select_by_type(type="MESH")
bpy.ops.object.delete(use_global=False)
for item in bpy.data.meshes:
    bpy.data.meshes.remove(item)

try:
    bpy.ops.object.mode_set(mode='OBJECT')
    bpy.ops.object.select_by_type(type="MESH")
    bpy.ops.object.delete(use_global=False)
    for item in bpy.data.meshes:
        bpy.data.meshes.remove(item)
except:
    pass


verts = np.load('/Users/varga/PycharmProjects/ver_Bounding_Thrusts.npy')
edges = np.load('/Users/varga/PycharmProjects/sim_Bounding_Thrusts.npy')

verts_topo = np.load('/Users/varga/PycharmProjects/ver_topo.npy')
edges_topo = np.load('/Users/varga/PycharmProjects/sim_topo.npy')
#print(edges_topo)
#verts = np.append(np.array(verts), np.load('/Users/varga/PycharmProjects/gempy/notebooks/examples/Ales_topo.npy'))
#edges = np.append(np.array(edges), np.load('/Users/varga/PycharmProjects/gempy/notebooks/examples/Ales_topo_simpl.npy'))

#verts.append(*np.load('/Users/varga/PycharmProjects/gempy/notebooks/examples/Ales_vert.npy'))
#edges.append(*np.load('/Users/varga/PycharmProjects/gempy/notebooks/examples/Ales_edges.npy'))


col = [(82, 118, 130),
 (82, 118, 130),
 (82, 118, 130),
 (159, 0, 82),
 (1, 84, 130),
 (255, 190, 0),
 (114, 143, 2), (1,1,1)]


def makeMaterial(name, diffuse, specular, alpha):
  mat=bpy.data.materials.new(name)
  mat.diffuse_color = diffuse
  mat.diffuse_shader = 'LAMBERT'
  mat.diffuse_intensity = 1.0
  mat.specular_color = specular
  mat.specular_shader = 'COOKTORR'
  mat.specular_intensity = 0.5
  mat.alpha = alpha
  mat.ambient = 1
  return mat

def setMaterial(ob, mat):
  me = ob.data
  me.materials.append(mat)

for i in range(0, 6):
#for i in range(6,6):
    mesh_data = bpy.data.meshes.new('cube_mesh_data')
    v = (verts[i] - np.array([4481366.5, 5292437.6185, 232.05]))/71911.8*10
    v[:,2] = v[:,2] * 1 
    
    mesh_data.from_pydata(v, [], edges[i].tolist())
    mesh_data.update()
    
    obj = bpy.data.objects.new('My_object', mesh_data)

    color = makeMaterial('Red', np.array(col[i])/255, (1,1,1), 1)
    setMaterial(obj, color)
    scene=bpy.context.scene
    scene.objects.link(obj)
    obj.select=True
    
mesh_data = bpy.data.meshes.new('cube_mesh_data')
print(verts_topo)
mesh_data.from_pydata((verts_topo - np.array([706744.9407500001, 5292437.6185, 232.05]))/71911.8*10,
 [], edges_topo.tolist())
mesh_data.update()

obj = bpy.data.objects.new('My_object', mesh_data)

color = makeMaterial('Red', np.array(col[-1])/255, (1,1,1), 1)
setMaterial(obj, color)
scene=bpy.context.scene
scene.objects.link(obj)
obj.select=True

print('sujugj')

agzimmerman avatar Feb 26 '20 20:02 agzimmerman

@flohorovicic maybe interesting for your Hiwi for the Blender add-on?

AlexanderJuestel avatar Sep 07 '21 14:09 AlexanderJuestel

@flohorovicic has some functions for this. Can you link them here?

Leguark avatar Apr 16 '24 11:04 Leguark