jupyter-widgets / pythreejs

A Jupyter - Three.js bridge
https://pythreejs.readthedocs.io
Other
943 stars 188 forks source link

ArrowHelper not working #258

Closed Boomer91 closed 5 years ago

Boomer91 commented 5 years ago

Hi,

I'm trying to render an arrow butnothing is rendered. Notebook example attached.

`from pythreejs import *

scene = Scene()

camera = PerspectiveCamera(position=[15, 0, -2], up=[0,0,-1]) scene.add(camera)

control = OrbitControls(controlling=camera, maxDistance=100)

renderer = Renderer(camera=camera, scene=scene, controls=[control], width=1000, height=800 )

axes = AxesHelper(size=1) scene.add(axes)

scene.add(ArrowHelper())

scene.add(AmbientLight(intensity=0.3))

renderer`

vidartf commented 5 years ago

Hi, and thanks for the report. I can reproduce with your code (thanks!).

It turns out, ArrowHelper had quite a bit of custom mapping needed. I'll open a PR to fix it, and reference this issue there.

Boomer91 commented 4 years ago

Hi, thanks for developing this awesome tool!

Arrows do render now, but there seems to be a bug with the direction argument. See minimal example below. Unit directions work fine, but e.g. dir = (1,1,1) renders a dir = (1,0,0) vector.

Thanks, Cyriel

from pythreejs import *

scene = Scene()

camera = PerspectiveCamera(position=[15, 0, -2], up=[0,0,-1])
scene.add(camera)

control = OrbitControls(controlling=camera, maxDistance=100)

renderer = Renderer(camera=camera, scene=scene,
controls=[control],
width=1000, height=800
)

axes = AxesHelper(size=1)
scene.add(axes)

arrow = ArrowHelper(
        dir=[1,0,0],
        origin=[1,0,0],
        length=3,
        color='red',
        headLength=None,
        headWidth=None,
)
scene.add(arrow)

arrow = ArrowHelper(
        dir=[0,1,0],
        origin=[1,0,0],
        length=3,
        color='green',
        headLength=None,
        headWidth=None,
)
scene.add(arrow)

arrow = ArrowHelper(
        dir=[0,0,1],
        origin=[1,0,0],
        length=3,
        color='blue',
        headLength=None,
        headWidth=None,
)
scene.add(arrow)

arrow = ArrowHelper(
        dir=[1,1,1],
        origin=[1,0,0],
        length=3,
        color='black',
        headLength=None,
        headWidth=None,
)
scene.add(arrow)

scene.add(AmbientLight(intensity=0.3))

renderer