game maker
Gebruikersnaam:
Wachtwoord:
Home Info Forums Help
Welkom, Gast. Alsjeblieft inloggen of registreren.
De activerings e-mail gemist?
+  Forums
|-+  Werken met Game Maker
| |-+  Tutorials en Uitbreidingen (Moderator: Maarten Baert)
| | |-+  [gex] 3D Particles
Pagina's: [1]
« vorige volgende »
Print
Advertenties

atjar
Gebruiker


Offline Offline

Berichten: 85


« Gepost op: 9 Juni 2013, 15:00:12 »

GM-versie: GameMaker 8
Registratie vereist: Ja
Niveau: Gemiddeld/gevorderd (oefen eerst met 2D particles)

De 3D Particles extension is een extension die het mogelijk maakt om met Gamemaker particles in 3D te maken. Het werkt bijna precies hetzelfde als het al bestaande 2D particle systeem.
Je kunt verschillende soorten particles maken met verschillende snelheden, kleuren, grootte, etc, je kunt attractors en deflectors maken die de particles beÔnvloeden...
De extensie lost automatisch het probleem van het in de juiste volgorde tekenen van de particles op, waardoor je geen objecten krijgt die plotseling onzichtbaar zijn of een rare kleur krijgen.

Momenteel bevat de extensie de volgende functies:
GML:
d3d_part_type_add()
d3d_part_type_set_movement(type,minxspeed,maxxspeed,minyspeed,maxyspeed,minzspeed,maxzspeed,minxacceleration,maxxacceleration,minyacceleration,maxyacceleration,minzacceleration,maxzacceleration,friction)
d3d_part_type_set_gravity(type,xgravity,ygravity,zgravity)
d3d_part_type_set_size(type,minsize,maxsize,sizechange,sizefactor)
d3d_part_type_set_color(type,color1,color2,color3,alpha1,alpha2,alpha3,blend)
d3d_part_type_set_life(type,minlife,maxlife,steptype,min,max)
d3d_part_type_set_death(type,deathtype,min,max)
d3d_part_type_destroy(type,deathparts)
d3d_part_type_exists (type)
d3d_part_attractor_create(x,y,z,force,maxdistance,forcetype,power,additive)
d3d_part_attractor_destroy(attractor)
d3d_part_deflector_create(x,y,z,friction,maxdistance,forcetype,power)
d3d_part_deflector_destroy(deflector)
d3d_part_set_position_camera(x,y,z)
d3d_part_update()
d3d_part_update_depthonly()
d3d_part_get_number()
d3d_part_get_next()
d3d_part_create(type,x,y,z)
d3d_part_get_type(id)
d3d_part_get_x(id)
d3d_part_get_y(id)
d3d_part_get_z(id)
d3d_part_get_xspeed(id)
d3d_part_get_yspeed(id)
d3d_part_get_zspeed(id)
d3d_part_get_xacceleration(id)
d3d_part_get_yacceleration(id)
d3d_part_get_zacceleration(id)
d3d_part_get_xrot(id)
d3d_part_get_yrot(id)
d3d_part_get_zrot(id)
d3d_part_get_size(id)
d3d_part_get_startlife(id)
d3d_part_get_life(id)
d3d_part_get_color(id)
d3d_part_get_alpha(id)
d3d_part_get_blend(id)

Enkele voorbeelden van wat je al heel makkelijk kunt bereiken:




Zoals je aan de afbeeldingen kunt zien is de extensie al vergevorderd. Er is natuurlijk altijd ruimte voor verbetering en uitbreiding, dus ik hoor graag suggesties!

De extensie is te downloaden via de site van Yoyogames: http://sandbox.yoyogames.com/games/217938-3d-particles-extension. In het zip-bestand zitten de volgende bestanden:
  • De .gex file
  • Drie .gm81 bestanden met de voorbeelden die je hierboven kunt zien (vuur, explosie, vuurwerk)
  • Een PDF bestand met uitgebreide uitleg over de functies

Let op: het tekenen van de particles gaat niet automatisch. In de drie examples kun je zien hoe het moet. Voor de zekerheid hier de code van de fire example:

GML:
d3d_light_enable(2,1)

d3d_part_update()

var number,partid,size,type;
number=d3d_part_get_number()
partid=0
size=0
type=0

repeat (number)
{
partid=d3d_part_get_next()
type=d3d_part_get_type(partid)
if type==part_fire||type==part_fire2
{
    size=d3d_part_get_size(partid)
    draw_set_alpha(d3d_part_get_alpha(partid))
    draw_set_color(d3d_part_get_color(partid))
    draw_set_blend_mode(d3d_part_get_blend(partid))
    d3d_transform_set_identity()
    d3d_transform_add_rotation_x(d3d_part_get_xrot(partid))
    d3d_transform_add_rotation_y(d3d_part_get_yrot(partid))
    d3d_transform_add_rotation_z(d3d_part_get_zrot(partid))
    d3d_transform_add_translation(d3d_part_get_x(partid),d3d_part_get_y(partid),d3d_part_get_z(partid))
    d3d_draw_wall(0,-size,-size,0,size,size,global.tex_fire,1,1)
    d3d_transform_set_identity()
}
else
if type==part_spark
{
    size=d3d_part_get_size(partid)
    draw_set_alpha(d3d_part_get_alpha(partid))
    draw_set_color(d3d_part_get_color(partid))
    draw_set_blend_mode(d3d_part_get_blend(partid))
    d3d_transform_set_identity()
    d3d_transform_add_rotation_x(arctan2(d3d_part_get_zspeed(partid),sqrt(power(d3d_part_get_xspeed(partid),2)+power(d3d_part_get_yspeed(partid),2)))*180/pi)
    d3d_transform_add_rotation_y(d3d_part_get_yrot(partid))
    d3d_transform_add_rotation_z(d3d_part_get_zrot(partid))
    d3d_transform_add_translation(d3d_part_get_x(partid),d3d_part_get_y(partid),d3d_part_get_z(partid))
    d3d_draw_wall(0,-size*3,-size,0,size*3,size,global.tex_circle,1,1)
    d3d_transform_set_identity()
}

}
draw_set_alpha(1)
draw_set_color(c_white)
draw_set_blend_mode(bm_normal)
d3d_light_enable(2,0)

Zoals je kunt zien worden de particles hier als walls getekend met een texture (by the way: alle examples gebruiken dezelfde texture en toch ziet het ar allemaal anders uit!), maar je kunt ze natuurlijk ook als 3D model tekenen!

Ik wens jullie allemaal veel succes en zou graag willen zien wat je met de extensie hebt gemaakt! En zoals ik al eerder zei, goede ideeŽn zijn altijd welkom.

« Laatste verandering: 10 Juni 2013, 20:21:10 door Maarten Baert »

Naar boven Gelogd

RockPolish
Gebruiker

Offline Offline

Berichten: 11


« Antwoord #1 Gepost op: 18 Juli 2013, 18:38:29 »

Wow, ik ben niet zo goed met particles maar dit ziet er geweldig uit!

Naar boven Gelogd

Advertenties
« vorige volgende »
Pagina's: [1]
Print


Topic Informatie
0 geregistreerde leden en 1 gast bekijken dit topic.

Ga naar:  

Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines
www.game-maker.nl © 2003-2020 Nederlandse Game Maker Community