Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
IMPORT3DS_PM.CPP
Package: openglsystem.rar [view]
Upload User: nthssl
Upload Date: 2022-04-05
Package Size: 25357k
Code Size: 4k
Category:
OpenCV
Development Platform:
Visual C++
- #include "stdafx.h"
- #include "impexp3ds.h"
- #include "import3ds_pm.h"
- import3ds_pm::import3ds_pm(scene *d,CListCtrl *l,char *file)
- {
- doc=d;
- lb=l;
- if (doc && lb)
- import(file,1);
- }
- void import3ds_pm::object3d(char *name,int nv,int nf,int ntc,float *local_axis)
- {
- int indx;
- LV_FINDINFO pFindInfo;
- pFindInfo.flags=LVFI_STRING;
- pFindInfo.psz=name;
- indx=lb->FindItem( &pFindInfo );
- if (indx!=-1)
- if (lb->GetItemState(indx,LVIS_SELECTED))
- {
- cobj=new object;
- cobj->smoothang=0.5;
- doc->nobj++;
- if (doc->obj0)
- cobj->next=doc->obj0;
- doc->obj0=cobj;
- strcpy(cobj->name,name);
- cobj->textcoord=ntc>0;
- if (nv)
- cobj->vt=new vtlist *[nv];
- if (nf)
- cobj->ft=new ftlist *[nf];
- cobj->nf=cobj->nrf=nf;
- cobj->nv=cobj->nrv=nv;
- v=f=t=0;
- }
- else cobj=0;
- }
- void import3ds_pm::vertex3(float *vec)
- {
- if (!cobj) return;
- cobj->vt[v]=new vtlist;
- cobj->vt[v]->pos.Vec(vec[0],vec[1],vec[2]);
- v++;
- }
- void import3ds_pm::text_coord(float *uv)
- {
- if (!cobj) return;
- cobj->vt[t]->tx[0]=uv[0];
- cobj->vt[t]->tx[1]=uv[1];
- t++;
- }
- void import3ds_pm::face3(unsigned short *fa)
- {
- if (!cobj) return;
- cobj->ft[f]=new ftlist;
- for(int i=0;i<3;i++)
- {
- if (fa[i]>=cobj->nv)
- fa[i]=0;
- cobj->ft[f]->lv[i]=cobj->vt[fa[i]];
- facelist *tmp=new facelist;
- tmp->face=cobj->ft[f];
- tmp->next=cobj->vt[fa[i]]->faces;
- cobj->vt[fa[i]]->faces=tmp;
- }
- cobj->ft[f]->material=0;
- f++;
- }
- void import3ds_pm::camera(char *name, float *pos, float *target, float bank, float lens)
- {
- if (doc->ncamlib)
- {
- class camera *temp=new class camera[doc->ncamlib+1];
- memcpy(temp,doc->camlib,sizeof(class camera)*doc->ncamlib);
- delete doc->camlib;
- doc->camlib=temp;
- }
- else doc->camlib=new class camera;
- strcpy(doc->camlib[doc->ncamlib].name,name);
- doc->camlib[doc->ncamlib].Vp.Vec(pos[0],pos[1],pos[2]);
- doc->camlib[doc->ncamlib].Lp.Vec(target[0],target[1],target[2]);
- doc->camlib[doc->ncamlib].theta=lens;
- doc->ncamlib++;
- }
- void import3ds_pm::face_material(material *mat,int nf,unsigned short *faces)
- {
- if (!cobj) return;
- int m,n;
- for( m=0;m<doc->nmatlib;m++ )
- if (!strcmp(mat->name,doc->matlib[m].name))
- break;
- if (m==doc->nmatlib)
- {
- material *temp=new material[doc->nmatlib+1];
- memcpy(temp,doc->matlib,sizeof(material)*doc->nmatlib);
- delete doc->matlib;
- doc->matlib=temp;
- memcpy(&doc->matlib[doc->nmatlib],mat,sizeof(material));
- doc->matlib[doc->nmatlib].map_bump.rotation*=-1;
- doc->matlib[doc->nmatlib].map_bump.v_offset*=-1;
- doc->matlib[doc->nmatlib].map_opacity.rotation*=-1;
- doc->matlib[doc->nmatlib].map_opacity.v_offset*=-1;
- doc->matlib[doc->nmatlib].map_selfillum.rotation*=-1;
- doc->matlib[doc->nmatlib].map_selfillum.v_offset*=-1;
- doc->matlib[doc->nmatlib].map_texture1.rotation*=-1;
- doc->matlib[doc->nmatlib].map_texture1.v_offset*=-1;
- doc->nmatlib++;
- }
- for( n=0;n<nf;n++ )
- cobj->ft[faces[n]]->material=m;
- }
- void import3ds_pm::pointlight(char *name, float *pos,float *color)
- {
- if (doc->nlights)
- {
- light *tmp=new light[doc->nlights+1];
- memcpy(tmp,doc->lightlib,sizeof(light)*doc->nlights);
- delete doc->lightlib;
- doc->lightlib=tmp;
- }
- else doc->lightlib=new light;
- strcpy(doc->lightlib[doc->nlights].name,name);
- doc->lightlib[doc->nlights].type=0;
- doc->lightlib[doc->nlights].pos.Vec(pos[0],pos[1],pos[2]);
- doc->lightlib[doc->nlights].color.Vec(color[0],color[1],color[2]);
- doc->nlights++;
- }
- void import3ds_pm::spotlight(char *name, float *pos,float *target,float *color,float hotspot,float falloff)
- {
- if (doc->nlights)
- {
- light *tmp=new light[doc->nlights+1];
- memcpy(tmp,doc->lightlib,sizeof(light)*doc->nlights);
- delete doc->lightlib;
- doc->lightlib=tmp;
- }
- else doc->lightlib=new light;
- strcpy(doc->lightlib[doc->nlights].name,name);
- doc->lightlib[doc->nlights].type=1;
- doc->lightlib[doc->nlights].pos.Vec(pos[0],pos[1],pos[2]);
- doc->lightlib[doc->nlights].color.Vec(color[0],color[1],color[2]);
- doc->lightlib[doc->nlights].target.Vec(target[0],target[1],target[2]);
- doc->lightlib[doc->nlights].hotspot=(float)CosD(hotspot/2.0);
- doc->lightlib[doc->nlights].falloff=(float)CosD(falloff/2.0);
- doc->lightlib[doc->nlights].dir=doc->lightlib[doc->nlights].target-doc->lightlib[doc->nlights].pos;
- doc->lightlib[doc->nlights].dir.Normalize();
- doc->nlights++;
- }