Skip to main content

Some tools for getting Wavefront OBJ files into a Plotly Dash 3dmesh graph

Project description

Import a Wavefront OBJ file into a plot.ly Dash 3dMesh graph:

pip install git+https://github.com/aegis1980/dash-obj-in-3dmesh.git

Some notes:

File locations

Put your wavefront obj & mtl file in 'data/obj' directory (this is the default). Alternatively pass a path to:

import_geometry(obj_names : List[str], path = _config.GEOMETRY_DIR)

Geometry

  • Only triangulated meshes supported (i.e 3 vertices per face). Sort this out in your modelling software (e.g. Rhino)
  • Textures, normals, groups are all ignored - only vertices, faces, materials and object names are parsed and passed to Dash graph as mesh data.

Materials

Only basic materials supported in mtl file: e.g:

newmtl diffuse_Green
Ka 0.0000 0.0000 0.0000
Kd 0.0000 1.0000 0.0000
Ks 1.0000 1.0000 1.0000
Tf 0.0000 0.0000 0.0000
d 1.0000
Ns 0.0000

Only the value for Kd is used - so set this as your colour (in modelling software)

Code example

import dash
from dash_obj_in_3dmesh import geometry_tools, wav_obj


model_name = "test" #.obj & .mtl files in data/obj


axis_template = {
    "showbackground": False,
    "visible" : False
}

plot_layout = {
    "title": "",
    "margin": {"t": 0, "b": 0, "l": 0, "r": 0},
    "font": {"size": 12, "color": "white"},
    "showlegend": False,
    'uirevision':'same_all_the_time', #this keeps camera position etc the same when data changes.
    "scene": {
        "xaxis": axis_template,
        "yaxis": axis_template,
        "zaxis": axis_template,
        "aspectmode" : "data",
        "camera": {"eye": {"x": 1.25, "y": 1.25, "z": 1.25}},
        "annotations": [],
    },
}

layout = return html.Div([dcc.Graph(
                        id="graph",
                        figure={
                            "data": geometry_tools.import_geometry([model_name]),
                            "layout": plot_layout,
                        },
                        config={"scrollZoom": True}, # activates wheel thingy on mouse to zoom and wotnot
                    )])

Project details


Release history Release notifications

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for dash-obj-in-3dmesh, version 0.3.1
Filename, size File type Python version Upload date Hashes
Filename, size dash_obj_in_3dmesh-0.3.1-py3-none-any.whl (14.4 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size dash-obj-in-3dmesh-0.3.1.tar.gz (13.4 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page