View unanswered posts | View active topics It is currently Sun Sep 23, 2018 7:48 pm



Reply to topic  [ 8 posts ] 
 loading textured models from fat? 
Author Message

Joined: Wed Jun 02, 2010 3:14 am
Posts: 52
Location: United States
hi can anyone could help me with loading models & textures using libfat on DS?

then i compile it seems to just freeze when i try to load a model with texture.


Sat May 19, 2012 12:53 am
Profile

Joined: Thu Jul 02, 2009 1:19 pm
Posts: 352
you need to provide some information if you want people to help you. what have you tried? do you have source code that people could look at?


Sat May 19, 2012 2:32 am
Profile

Joined: Wed Jun 02, 2010 3:14 am
Posts: 52
Location: United States
elhobbs wrote:
you need to provide some information if you want people to help you. what have you tried? do you have source code that people could look at?


heres the source code if you would like to take look at.
im useing the method from "C:\devkitPro\examples\nds\Graphics\Backgrounds\all_in_one"
as a basic menu to select the selection then run the code.

i have the files (models & textures) converted to bin format in a folder called FAT DATA.

Code:
#include <nds.h>

#include <fat.h>
#include <string.h>
#include <dirent.h>

#include <stdio.h>
#include <stdlib.h>
#include <dswifi9.h>
#include <maxmod9.h>
#include "soundbank.h"
#include "soundbank_bin.h"

//objects
int bcartex64_texid;

int cratetex64_texid;
int cratemetaltex64_texid;
int cratet3tex64_texid;
//solo

void map0(void) //test [model viewer]
{
   //camera
   int rx = 0, ry = 0;
   int oldx = 0, oldy = 0;
   int p1xpos = -20, p1ypos =  -0;
   
   //models
   int modelnum = 0;

   touchPosition touchXY;
   videoSetMode(MODE_0_3D);
   
   //initialize the geometry engine
   glInit();
   //enable antialiasing
   glEnable(GL_ANTIALIAS);
   glClearColor(0,128,128,31); glClearPolyID(63); glClearDepth(0x7FFF);
   // Set our viewport to be the same size as the screen
   glViewport(0,0,255,191);
   
   {//textures
   vramSetBankA(VRAM_A_TEXTURE);
   glEnable(GL_TEXTURE_2D);
   //crate texture
   glGenTextures( 1, &cratetex64_texid ); glBindTexture( 0, cratetex64_texid );
   glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_64, TEXTURE_SIZE_64, 0, TEXGEN_TEXCOORD, "cratetex64.bin");   
   //crate metal texture
   glGenTextures( 1, &cratemetaltex64_texid ); glBindTexture( 0, cratemetaltex64_texid );
   glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_64, TEXTURE_SIZE_64, 0, TEXGEN_TEXCOORD, "cratemetaltex64.bin");
   //crate t3 texture
   glGenTextures( 1, &cratet3tex64_texid ); glBindTexture( 0, cratet3tex64_texid );
   glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_64, TEXTURE_SIZE_64, 0, TEXGEN_TEXCOORD, "cratet3tex64.bin");
   //crate t3 texture
   glGenTextures( 1, &bcartex64_texid ); glBindTexture( 0, bcartex64_texid );
   glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_64, TEXTURE_SIZE_64, 0, TEXGEN_TEXCOORD, "bcartex64.bin");
   }
   
   {//bottom screen stuff
   videoSetModeSub(MODE_0_2D);
   PrintConsole bottomScreen;
   vramSetBankC(VRAM_C_SUB_BG);
   consoleInit(&bottomScreen, 0,BgType_Text4bpp, BgSize_T_256x256, 31, 0, false, true);
   iprintf("T3-Games-Zero [Model view]");
   printf("\x1b[3;1HPress D-Pad> Movement.");
   printf("\x1b[4;1HTouch> Rotate");   
   
   //main loop
   while (1) {      
      scanKeys(); touchRead(&touchXY);
      int held = keysHeld(), pressed = keysDown();
   
      {//insert to move camera around here
      if(held & KEY_RIGHT && p1ypos > -10)p1ypos -=1;
      if(held & KEY_LEFT && p1ypos < 10)p1ypos +=1;
      if(held & KEY_DOWN && p1xpos > -35)p1xpos -=1;
      if(held & KEY_UP && p1xpos <-5)p1xpos +=1;}
      
      printf("\x1b[5;2HPress L/R> Change Model %d - 1", modelnum);
      {//model change
      if(pressed & KEY_L && modelnum > 0) modelnum -=1;
      if(pressed & KEY_R && modelnum < 2)modelnum +=1;}

      //reset x and y when user touches screen
      if(pressed & KEY_TOUCH){oldx = touchXY.px; oldy = touchXY.py;}

      //if user drags then grab the delta
      if(held & KEY_TOUCH){
         rx += touchXY.px - oldx; oldx = touchXY.px;
         ry += touchXY.py - oldy; oldy = touchXY.py;}
         
      //handle camera
      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
         gluPerspective(70, 256.0 / 192.0, 0.1, 175);
         glPolyFmt(POLY_ALPHA(31)| POLY_CULL_NONE );
         glMaterialShinyness ();
         
      {//lighting
      glLight(0, RGB15(31,31,31), 0, floattov10(-1.0) , 0);
      glLight(1, RGB15(31,0,31) ,  0,floattov10(1) - 1, 0);
      glLight(2, RGB15(0,31,0)  ,  floattov10(-1.0), 0, 0);
      glLight(3, RGB15(0,0,31)  , floattov10(1.0) - 1,0,0);}
      
      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
      
      glTranslatef(0,0,-10); 
      glTranslatef(p1ypos,0,p1xpos); glRotateY(rx);glRotateX(ry);
      
      printf("\x1b[9;5HtestRX:%d    ", rx);
      printf("\x1b[10;6HtestRY:%d    ", ry);
      printf("\x1b[11;7HtestPX:%d   ", touchXY.px);
      printf("\x1b[12;8HtestPY:%d   ", touchXY.px);
      
      if(modelnum == 0){//nothing               
      printf("\x1b[6;2HNothing");
         }//nothing
      
      if(modelnum == 1){//crates         
      //crate      
      printf("\x1b[6;2HCrates     ");
         glPushMatrix();
         glMatrixMode(GL_TEXTURE);
         glLoadIdentity();
         glMatrixMode(GL_MODELVIEW);         
         glPolyFmt(POLY_ALPHA(31) | POLY_CULL_BACK | POLY_FORMAT_LIGHT0 | POLY_FORMAT_LIGHT1 | POLY_FORMAT_LIGHT2 | POLY_FORMAT_LIGHT3 ) ;
         glMaterialf(GL_AMBIENT, RGB15(8,8,8));
                        glMaterialf(GL_DIFFUSE, RGB15(16,16,16));
         glMaterialf(GL_SPECULAR, BIT(15) | RGB15(8,8,8));
                        glMaterialf(GL_EMISSION, RGB15(5,5,5));
         glTranslatef(0,0,0);
         glScalef32(10000,10000,10000);
         glBindTexture( 0, cratetex64_texid );
         glCallList((u32*)"crate64.bin");
         glPopMatrix(1);
         
      //crate   metal
         glPushMatrix();
         glMatrixMode(GL_TEXTURE);
         glLoadIdentity();
         glMatrixMode(GL_MODELVIEW);
         glPolyFmt(POLY_ALPHA(31) | POLY_CULL_BACK | POLY_FORMAT_LIGHT0 | POLY_FORMAT_LIGHT1 | POLY_FORMAT_LIGHT2 | POLY_FORMAT_LIGHT3 ) ;
         glMaterialf(GL_AMBIENT, RGB15(8,8,8));
         glMaterialf(GL_DIFFUSE, RGB15(16,16,16));
         glMaterialf(GL_SPECULAR, BIT(15) | RGB15(8,8,8));
         glMaterialf(GL_EMISSION, RGB15(5,5,5));
         glTranslatef(10,0,-10); //glRotateX(ry); glRotateY(rx);
         glScalef32(10000,10000,10000);
         glBindTexture( 0, cratemetaltex64_texid );
         glCallList((u32*)"crate64.bin");
         glPopMatrix(1);   
         
      //crate   t3
         glPushMatrix();
         glMatrixMode(GL_TEXTURE);
         glLoadIdentity();
         glMatrixMode(GL_MODELVIEW);
         glPolyFmt(POLY_ALPHA(31) | POLY_CULL_BACK | POLY_FORMAT_LIGHT0 | POLY_FORMAT_LIGHT1 | POLY_FORMAT_LIGHT2 | POLY_FORMAT_LIGHT3 ) ;
         glMaterialf(GL_AMBIENT, RGB15(8,8,8));
         glMaterialf(GL_DIFFUSE, RGB15(16,16,16));
         glMaterialf(GL_SPECULAR, BIT(15) | RGB15(8,8,8));
         glMaterialf(GL_EMISSION, RGB15(5,5,5));
         glTranslatef(-10,0,-10); //glRotateX(ry); glRotateY(rx);
         glScalef32(10000,10000,10000);
         glBindTexture( 0, cratet3tex64_texid );
         glCallList((u32*)"crate64.bin");
         glPopMatrix(1);      
         }//crates
         
      if(modelnum == 2){//car               
      printf("\x1b[6;2HCar     ");
         glPushMatrix();
         glMatrixMode(GL_TEXTURE);
         glLoadIdentity();
         glMatrixMode(GL_MODELVIEW);
         glPolyFmt(POLY_ALPHA(31) | POLY_CULL_NONE | POLY_FORMAT_LIGHT0 | POLY_FORMAT_LIGHT1 | POLY_FORMAT_LIGHT2 | POLY_FORMAT_LIGHT3 ) ;
         glMaterialf(GL_AMBIENT, RGB15(8,8,8));
         glMaterialf(GL_DIFFUSE, RGB15(16,16,16));
         glMaterialf(GL_SPECULAR, BIT(15) | RGB15(8,8,8));
         glMaterialf(GL_EMISSION, RGB15(5,5,5));
         glTranslatef(0,0,0);
         glScalef32(10000,10000,10000);
         glBindTexture( 0, bcartex64_texid );
         glCallList((u32*)"bcar64.bin");
         glPopMatrix(1);
         }//car
               
      swiWaitForVBlank();

      // flush to the screen
      glFlush(0);
   }
}


Sat May 19, 2012 2:59 am
Profile

Joined: Wed Jun 02, 2010 3:14 am
Posts: 52
Location: United States
bump bump


Wed Nov 07, 2012 10:40 pm
Profile

Joined: Thu Jul 02, 2009 1:19 pm
Posts: 352
glTexImage2D and glCallList do not take filenames as parameters. where you are specifying filenames they are actually looking for buffers where the data representing the object have been loaded. look at the libfat examples for how to read data from files. of course this assumes that the data in the files you are referencing are already in the expected ds specific formats.


Thu Nov 08, 2012 12:35 am
Profile

Joined: Wed Jun 02, 2010 3:14 am
Posts: 52
Location: United States
the models are converted .bin, & the textures im useing are .pcx.


Sat Nov 09, 2013 8:54 pm
Profile

Joined: Wed Jun 02, 2010 3:14 am
Posts: 52
Location: United States
what about nitrofs? examples>nds>filesystem>nitrodir


Fri Dec 06, 2013 7:13 am
Profile

Joined: Thu Jul 02, 2009 1:19 pm
Posts: 352
what about nitrofs? are you asking if it can be used or suggesting a solution?

the fat and nitrofs examples show to to read data from disk. Is your question "how do I read from disk?" or is it "how do I parse the data in my files"? the first question is answered by the samples. the second question requires more information about how the model was created and what format it is saved in. there are libnds functions for using pcx files for ds textures - look at the examples.

not to be intentionally cruel but it has been over a year since your original post. either you are putting in 0 effort on your part, or you may have no aptitude for the task at hand. you may want to consider taking a basic level C programming course or try programming for a pc instead. there are easier development tools and tutorials/examples for the pc.


Fri Dec 06, 2013 1:54 pm
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 8 posts ] 

Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
  Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.
Get devkitPro at SourceForge.net. Fast, secure and Free Open Source software downloads