XCMODEL: un sistema per la modellazione e resa di curve e superfici NURBS trimmate

Giulio Casciola
Dipartimento di Matematica
Università di Bologna




















Giornate di Studio su Temi
dell'Analisi Numerica
Milano 17/6/99






Cos'è XCMODEL

XCMODEL vuol essere un laboratorio di didattica e ricerca,

per apprendere e sperimentare,

un ambiente ideale per sviluppare, mettere a punto e confrontare

metodi ed algoritmi della modellazione geometrica e della grafica al calcolatore.

Curve e Superfici in forma parametrica
NURBS Non Uniform Rational B-Spline (standard de facto per la rappresentazione di informazioni geometriche e scambio dati)
P (u)=
n
å
i=0
PiRi,h(u)
dove
Ri,h(u)=
wiNi,h(u)

n
å
p=0
wpNp,h(u)
con
wi>0
P (u,v)=
n
å
i=0
m
å
j=0
PijRi,h,j,k(u,v)
dove
Ri,h,j,k(u,v)=
wijNi,h(u)Nj,k(v)

n
å
p=0
m
å
q=0
wpqNp,h(u)Nq,k(v)
con
wij>0

Curve e Superfici in forma parametrica
NURBS Trimmate Curve e Superfici NURBS definite su un sottodominio del dominio parametrico (definito mediante un albero o una lista di curve piane lineari a tratti o NURBS)

Un esempio di modellazione e resa
Modellazione di un'ala
Le sezioni sono curve piane ottenute con il modellatore 2D; la superficie dell'ala è stata ottenuta per interpolazione delle curve 2D usando il modellatore 3D (skinning surface).

Modellazione di un motore
curva 2D, sezione del motore
La curva sezione è stata realizzata con il modellatore 2D; con il modellatore 3D si è generata la superficie dell'intero motore (revolving surface).

Modellazione di ali e timoni
Le altre ali: la seconda ala, i timoni di profondità e di direzione, sono state prodotte come copie, opportunamente traslate, scalate e ruotate, dell'ala precedente modellata.

Modellazione del corpo centrale
Le parti del corpo centrale sono state ottenute per interpolazione di opportune curve sezione (skinning surface).

Assemblaggio del corpo centrale
Join (glue) operation.

Assemblaggio dell'intero aereo
Posizionamento dei vari componenti.

Descrizione scena interattiva
I componenti della scena sono:

Descrizione scena procedurale

#include "descriptor/descriptor.h"

#define NUM_NURBS_OBJ 10
#define OBJ_ARR { \
 {"upfuso.db",     0, 0.5, 0}, \
 {"upaladx.db",    0, 0.5, 0}, \
 {"upalasx.db",    0, 0.5, 0}, \
 {"upmuso.db",     0, 0.5, 0}, \
 {"upmotoredx.db", 0, 0.5, 0}, \
 {"upmotoresx.db", 0, 0.5, 0}, \
 {"uppianocdx.db", 0, 0.5, 0}, \
 {"uppianocsx.db", 0, 0.5, 0}, \
 {"upcoda.db",     0, 0.5, 0}, \
 {"uptimone.db",   0, 0.5, 0} \
}

typedef struct {
  char   name[50];
  double r, g, b;
} Obj_t;

static Obj_t obj_desc[NUM_NURBS_OBJ] = OBJ_ARR;

int main(void) {

  int x,y,z,nogg;
  ITEM oggetto[NUM_NURBS_OBJ],piano,lista,
       attributo,attr_piano;

  set_background(0.678,0.854,1,TRUE);
  create_point_light(0.5,39.6,139.7,1,1,1,1,0,"luce_1");

  attributo = create_attribute("materiale_boing");
  set_color(attributo,0, 0.5, 0.5, 0.4, 0.5);
  set_reflectivity(attributo, 0.4, 2);

  attr_piano = create_attribute("materiale_piano");
  set_color(attr_piano, 0.623, 0.529, 0.196, 0.4, 0.5);
  set_reflectivity(attributo, 0.4, 20);
  
  for(nogg = 0; nogg < NUM_NURBS_OBJ; nogg++) {
    oggetto[nogg] = read_nurbs(obj_desc[nogg].name);
    set_attribute(oggetto[nogg], attributo);
  }

  piano = read_nurbs("piano.db");
  set_attribute(piano,attr_piano);

  lista = create_list(oggetto[0], "boeing");
  for (nogg = 1; nogg < NUM_NURBS_OBJ; nogg++)
    lista = insert_in_list(lista, oggetto[nogg]);
  lista = insert_in_list(lista,piano);

  save_scene("boeing.md", "boeing", lista);
  return(0);
}
Resa della scena
L'algortimo usato per la resa realistica e` il Ray-Tracing.

I pacchetti di XCMODEL
xccurv
modellatore 2D
xcsurf
modellatore 3D
xcbool
composizione solida
xcssi
l'intersecatore
tree2dbe
il convertitore di formato
xcrayt
descrittore di scena e resa
xhrayt,hrayt
il ray-tracer
xmovie,xframe
il visualizzatore di immagini
Le librerie di XCMODEL
MATRIX
elaborazione vettori e matrici
descriptor
descrittore di scena
xtools
la GUI del sistema
Caratteristiche di XCMODEL
Caratteristiche tecniche
xcxccurv c2dcurves2d c3dcurves3d xsxcsurf ssurfaces xbxcbool oobjects xrxcrayt ttextures mmodels

Caratteristiche tecniche (continua)
Schema attuale di XCMODEL
xcxccurv xsxcsurf xbxcbool xcsxcssi t2dtree2dbe xrxcrayt xhxhrayt/hrayt xmxmovie xfxframe ddescriptor mMATRIX xtxtools xlXlib xpXpm


This document was tranlated from LATEX by HEVEA and HACHA.