I have no time to test your class, but if its still the path issue: it must be
relative to your swf.
Fabrice
On Jun 27, 2010, at 12:21 AM, Th3Sh33p wrote:
> Sorry Fabrice, but I can't get this to work, here's my entire class.
> Maybe it isn't working because i'm trying to clone the object?
>
> package {
> import away3dlite.containers.ObjectContainer3D
> import away3dlite.loaders.Loader3D
> import away3dlite.events.Loader3DEvent;
> import away3dlite.loaders.AbstractParser
> import away3dlite.loaders.AWData;
> import away3dlite.containers.ObjectContainer3D
> import flash.display.Sprite
> import flash.events.Event;
> import away3dlite.primitives.Cube6;
> import away3dlite.materials.WireColorMaterial;
> import away3dlite.containers.ObjectContainer3D
> import away3dlite.materials.BitmapMaterial;
>
> public class ObjectMani extends Sprite{
> private var knownObjects:Array = ["Tree","Tree"];
> private var constructed:Array = [];
>
> public var afterLoadFunction:Function;
> public var objectsLoaded:int = 0;
> public function ObjectMani(func:Function = null){
> afterLoadFunction = func
> for (var i:int = 0;i<knownObjects.length;i++){
> var ld:Loader3D = new Loader3D()
>
> ld.addEventListener(Loader3DEvent.LOAD_SUCCESS,model_loaded);
>
> ld.addEventListener(Loader3DEvent.LOAD_ERROR,model_errored);
> ld.name = String(i);
> var ap:AWData = new AWData()
> ap.pathToSources =
> "C:/xampp/htdocs/3d/unit/"+knownObjects[i]
> +"/"+knownObjects[i]+"/images"
>
> ld.loadGeometry("unit/"+knownObjects[i]+"/"+knownObjects[i]
> +".awd",ap);
> }
> //addEventListener(Event.ADDED,added);
> }
> private function added(e:Event){
> //afterLoadFunction()
> }
> private function model_loaded(e:Loader3DEvent){
> trace("Model "+knownObjects[Number(e.target.name)], " :
> Successful
> Load!");
> constructed[Number(e.target.name)] = e.target.handle
> objectsLoaded++;
> if (objectsLoaded>=knownObjects.length){
> afterLoadFunction()
> }
> }
> private function model_errored(e:Loader3DEvent){
> trace("Model "+knownObjects[Number(e.target.name)], " :
> Load
> Fail!");
> }
> public function getId(str:String){
> var found:Boolean = false
> for (var i:int = 0;i<knownObjects.length&&!found;i++){
> if (str == knownObjects[i]){
> return i;
> found = true
> }
> }
> if (!found){
> return 0;
> }
> }
> public function create(id:int,scl:Number = 1) {
> //return getDef()
> return fixModel(constructed[id].clone(),scl);
> //return this["create"+knownObjects[id]]()
> }
> private function getDef():ObjectContainer3D{
> var n:Cube6 = new Cube6(new
> WireColorMaterial(),10,20,10,2,2,2);
> var con:ObjectContainer3D = new ObjectContainer3D(n);
> return con;
> }
> private function fixModel(mv:ObjectContainer3D,scl:Number){
> mv.y -= 100
> mv.scaleX = .1*scl
> mv.scaleY = .1*scl
> mv.scaleZ = .1*scl
> return mv
> }
>
> }
>
> }
>
>
> On Jun 26, 3:57 pm, Fabrice3D <[email protected]> wrote:
>> its a setter... sorry for the typo.
>>
>>>> ap.pathToSources("/stuff/otherstuff/myimages/");
>>
>> should be ap.pathToSources = "/stuff/otherstuff/myimages/";
>>
>> /**
>> * Allows to set custom path to source(s) map(s) other than
>> set in file
>> * Standard output url from Prefab awd files is
>> "images/filename.jpg"
>> * when set pathToSources, url becomes [newurl]filename.jpg.
>> * Example: AWData.pathToSources = "mydisc/myfiles/";
>> * Only required for load method using Loader3D
>> * var awd:AWData = new AWData();
>> * awd.pathToSources = "mydisc/myfiles/";
>> * loader = new Loader3D();
>> * loader.addEventListener(Loader3DEvent.LOAD_SUCCESS,
>> onSuccess);
>> * loader.loadGeometry("mymodels/car.awd", awd);
>> *
>> */
>> public function set pathToSources(url:String):void
>> {
>> customPath = url;
>> }
>>
>> Fabrice
>>
>> On Jun 26, 2010, at 9:22 PM, Th3Sh33p wrote:
>>
>>
>>
>>> Thanks for quick reply Fabrice,
>>
>>> After modifying my script like so...
>>
>>> var model_number:int = 0
>>> var model:String = "tree";
>>> var ld:Loader3D = new Loader3D()
>>> ld.addEventListener(Loader3DEvent.LOAD_SUCCESS,model_loaded);
>>> ld.addEventListener(Loader3DEvent.LOAD_ERROR,model_errored);
>>> ld.name = String(model_number);
>>> var ap:AWData = new AWData()
>>> ap.pathToSources("unit/"+model+"/"+model+"/images")
>>> ld.loadGeometry("unit/"+model+"/"+model+".awd",ap);
>>> private function model_loaded(e:Loader3DEvent){
>>> constructed[Number(e.target.name)] = e.target.handle
>>> }
>>
>>> I get the error
>>
>>> Line 29 1061: Call to a possibly undefined method pathToSources
>>> through a reference with static type away3dlite.loaders:AWData.
>>
>>> Is this possible in away3dlite?
>>
>>> On Jun 26, 3:07 pm, Fabrice3D <[email protected]> wrote:
>>>> Prefab resolves urls and also unescape them.
>>>> just open bitmapFilematerial and add a trace where the url is passed to
>>>> load the image.
>>>> you probably will get hints there.
>>
>>>> note that you also can pass a custom path to AWData parser for your images
>>>> directory as well.
>>
>>>> like var ap:AWData = new AWData();
>>>> ap.pathToSources("/stuff/otherstuff/myimages/");
>>
>>>> you also can add to init object of the AWData instance like this if you
>>>> use the parse handler for embedded awd files
>>>> var ap:AWData = new AWData({customPath:"/stuff/otherstuff/myimages/"});
>>
>>>> Fabrice
>>
>>>> On Jun 26, 2010, at 7:37 PM, Th3Sh33p wrote:
>>
>>>>> I created a tree model, which I would like to place in my project, it
>>>>> was created as a obj file, imported into prefab, then a texture was
>>>>> added and I exported as a awd file. Then I used this script...
>>
>>>>> var model_number:int = 0
>>>>> var model:String = "tree";
>>>>> var ld:Loader3D = new Loader3D()
>>>>> ld.addEventListener(Loader3DEvent.LOAD_SUCCESS,model_loaded);
>>>>> ld.addEventListener(Loader3DEvent.LOAD_ERROR,model_errored);
>>>>> ld.name = String(model_number);
>>>>> var ap:AWData = new AWData()
>>>>> ld.loadGeometry("unit/"+model+"/"+model+".awd",ap);
>>
>>>>> private function model_loaded(e:Loader3DEvent){
>>>>> constructed[Number(e.target.name)] = e.target.handle
>>>>> }
>>>>> .. to import the model, which was successful, however the model has no
>>>>> material or texture. I have tried various things I've seen on other
>>>>> threads but the model is always white when imported.The folder
>>>>> "images" is located next to "tree.awd".
>>
>>>>> How can I import this model with it's material?
>>
>>>>> *The model imports successfully with textures back into prefab