William-ST / min3d

Automatically exported from code.google.com/p/min3d
0 stars 0 forks source link

Implementing clone() method for Object3dContainer does not work #7

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
1) Inserted the clone() method below in Object3dContainer
2) No errors, does return Object3d
3) Returned Object3d not visible, not even untextured or something

public Object3d clone()
{
    Vertices v = _vertices.clone();
    FacesBufferedList f = _faces.clone();

    Object3d clone = new Object3d(v, f, _textures);
    clone.position().x = position().x;
    clone.position().y = position().y;
    clone.position().z = position().z;
    clone.rotation().x = rotation().x;
    clone.rotation().y = rotation().y;
    clone.rotation().z = rotation().z;
    clone.scale().x = scale().x;
    clone.scale().y = scale().y;
    clone.scale().z = scale().z;
    return clone;
}

Original issue reported on code.google.com by schlicht...@googlemail.com on 14 Aug 2010 at 9:01

GoogleCodeExporter commented 8 years ago
Fixed this issue by adding clone methods to the Object3d and Object3dContainer 
classes.

Original comment by ippeldv@gmail.com on 2 Sep 2010 at 12:26

GoogleCodeExporter commented 8 years ago
not fixed at all, Object3dContainer should clone children too...

    public Object3dContainer clone()
    {
        Vertices v = _vertices.clone();
        FacesBufferedList f = _faces.clone();

        Object3dContainer clone = new Object3dContainer(v, f, _textures);
        clone.position().x = position().x;
        clone.position().y = position().y;
        clone.position().z = position().z;
        clone.rotation().x = rotation().x;
        clone.rotation().y = rotation().y;
        clone.rotation().z = rotation().z;
        clone.scale().x = scale().x;
        clone.scale().y = scale().y;
        clone.scale().z = scale().z;

        Iterator<Object3d> it = _children.iterator();
        while ( it.hasNext()) {
            clone.addChild( it.next().clone());
        }
        return clone;
    }

Original comment by rdavio...@gmail.com on 25 Sep 2010 at 8:57

GoogleCodeExporter commented 8 years ago
This seems not to be fixed. Cloning an Object3DContainer does not clone the 
children as mentioned above. Furthermore, using the code above results in a 
crash "[app] called a GL11 Pointer method with an indirect Buffer".

Is there a way to render more than object from one parser yet?

Original comment by spiran...@gmail.com on 20 Jan 2011 at 3:56

GoogleCodeExporter commented 8 years ago
To load multiple models from one parser I have to parse the file each 
time,which takes lots of time. If you could fix the clone() method that would 
be MUCH simpler.

Original comment by gambit...@gmail.com on 7 Feb 2011 at 2:37

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
I have found a way around this for .obj files which have no UV or colour data.

In min3d.core.Vertices.java, I replaced 

public Vertices clone()
    {
        Vertices v = new Vertices(_points.clone(), _uvs.clone(), _normals.clone(), _colors.clone());
        return v;
    }

    with

    public Vertices clone()
    {
        Vertices v = new Vertices(0, false, false, false);
        return v;
    }

and was able to clone an Object3dContainer and its children.
It's rough but it worked!
Rob C

Original comment by mattoctr...@gmail.com on 17 Dec 2011 at 6:33