[3D Flash] Molekuul Modellen

Pagina: 1
Acties:

  • Scyth
  • Registratie: Juli 2001
  • Laatst online: 16-03-2024

Scyth

Fat finger, three beer

Topicstarter
Voor een nieuwe internetsite wil ik een molekuul om zijn as laten draaien. Het molekuul moet voorgesteld worden als bolletjes met staafjes ertussen. Heeft iemand ideëen over hoe ik dit het beste uit kan gaan voeren? Kennis van 3D engines in flash heb ik helaas niet.

Dell Studio XPS 16
Project: BavBierSub 1.0 BavBierSub 2.0


  • mitchel
  • Registratie: Maart 2001
  • Niet online
met Swift 3D is dit makkelijk te doen.
alleen is het programma niet gratis....

http://www.swift3d.com/

  • Yellow|A
  • Registratie: Maart 2000
  • Niet online

Yellow|A

Allotaja of rock and rollah

Uhm swift3d is wel handig voor mensen zonder 3d engine kennis enzo, maar anders, lijkt het me handig als je jezelf er wat in verdiept, 3d in flesj enzo :) Script requests doen we hiet niet aan.

offtopic:
Met swift 3d moet het wel kunnen denk ik ja :) keek net eventjes en in 2.0 was het mogelijk voor mij een basis "molecuul" dingetjes te maken

|{ brrr }] |


Verwijderd

Eerlijk gezegd denk ik niet aan kennis van 3d engines in flash zal liggen, maar eerder een gebrek aan kennis van of:

3d engines.
Flash.

Geef eens aan welke van beiden de bottleneck is, piel eens wat in flash ermee, en laat weten wat wel/niet lukt.
Voor scriptrequests zijn we inderdaad niet, daarvoor zijn er freelancers/bedrijven die je er rijkelijk voor kan betalen.

Btw, een nieuwe internetsite? Wow, is dat internet nou nog niet af? :P

Verwijderd

Verwijderd schreef op 14 November 2002 @ 23:34:
Eerlijk gezegd denk ik niet aan kennis van 3d engines in flash zal liggen, maar eerder een gebrek aan kennis van of:

3d engines.
Flash.
Hmm.. Zo had ik er nog niet tegenaan gekeken. Flashen gaat wel, ActionScript matig en 3D engines niet. Nu begrijp ik dat je met Flash/ActionScript moet beginnen en ik weet wel waar ik die info vandaan moet halen, maar waar staat iets over 3D engines?

Werkt 't in Flash ongeveer 't zelfde als met volwaardige programmeertalen?

Verwijderd

Verwijderd schreef op 15 November 2002 @ 01:15:
[...]


Hmm.. Zo had ik er nog niet tegenaan gekeken. Flashen gaat wel, ActionScript matig en 3D engines niet. Nu begrijp ik dat je met Flash/ActionScript moet beginnen en ik weet wel waar ik die info vandaan moet halen, maar waar staat iets over 3D engines?

Werkt 't in Flash ongeveer 't zelfde als met volwaardige programmeertalen?
Positief om mee te beginnen:

Flash trigonometry

  • André
  • Registratie: Maart 2002
  • Laatst online: 28-08 14:49

André

Analytics dude

Ik zou als ik jou was het met SVG (Scalable Vector Graphics) doen.

http://www.adobe.com/svg/demos/main.html

Dan kun je aan de hand van coordinaten een molekuul model maken. En eventueel laad je de gegevens in vanuit een database waarin alle molekuul structuren staan omschreven. :7

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*


  • re.run
  • Registratie: Maart 2002
  • Laatst online: 20-08 15:30

none


Verwijderd

Yogho schreef op 15 November 2002 @ 10:03:
Ik zou als ik jou was het met SVG (Scalable Vector Graphics) doen.

http://www.adobe.com/svg/demos/main.html

Dan kun je aan de hand van coordinaten een molekuul model maken. En eventueel laad je de gegevens in vanuit een database waarin alle molekuul structuren staan omschreven. :7
Ik zou hem best willen zien, die demo, maar dan heb ik een 2,7Mb plugin nodig, die ik nu niet heb :)

Verwijderd

ftp://ftp.hornet.org/pub/demos/code/3d/docs/fh-3dtut.zip

Staat een redelijk makkelijke 3d rotatie tutorialtje in...is wel interresting.

  • Yoozer
  • Registratie: Februari 2001
  • Laatst online: 20-01 22:02

Yoozer

minimoog

nou, als je de bolletjes zelf al zo op 't scherm kan krijgen (met een hoop actionscripting) is het tekenen van de staafjes makkelijk. moet het een pseudo-3d engine zijn of moet 't -echt- 3d zijn?

als 't maar pseudo hoeft te zijn : gebruik de wiskundige formule voor een cirkel. x(coord) = cos(x), y(coord) is sin (x). wat je dan hebt is (als je een lus van 0 tot 2pi laat lopen) niets anders dat een punt dat tegen de klok indraait. het ligt er een beetje aan hoe vloeiend je de stappen maakt, en stapgrootte zou je kunnen pakken als pi/128 of zo. nu moet je die cirkel nog afplatten : dat doe je door een factor voor de y-coordinaat te zetten, zoals 0.4sin(x). nu moet je ook nog het balletje zelf verkleinen als het 'de diepte ingaat', en dat kun je doen door de grootte afhankelijk te maken van nog een functie.

als je balletje begint (rechts), dan is de afstand tot het middelpunt de straal, en de hoogte t.o.v. het middelpunt is dan 0. links : precies hetzelfde, alleen met een negatieve straal.

als je balletje achteraan is, is de hoogte 0.4 (zie factor voor sinus), en de afstand 0. zit je balletje helemaal vooraan, dan is de hoogte -0.4, en de afstand ook 0. je moet dus een functie vinden die beide getallen in gedachten houdt, en er een goed resultaat mee bereikt. desnoods combinaties van lineaire functies (if-constructies).

dan heb je een balletje dat ronddraait in 1 vlak. meerdere vlakken zijn ook cos/sin combinaties, maar die liggen dan hoger (er wordt dus een getal bij het sin-gedeelte opgeteld). verder is het voor een realistischer effect slim om de ooghoogte mee te nemen - een 'maximaal' uitgerekte cirkel die onder je ligt heeft een sin-factor van 0.5, en een cirkel op ooghoogte heeft een sin-factor van 0 (gaat dus alleen heen & weer). een cirkel die boven je ligt moet in feite met de klok meedraaien - negatieve sin-factor dus. stel het geheel nu voor als een cylinder, waar de hoogte van 0.5 tot -0.5 loopt, waar de diepte bepaalt wordt door de verkleining/vergroting van het bolletje, en de ronddraaisnelheid door de stapgrootte.

laatste : wil je balletjes in een vierkante vorm hebben draaien, geef een dergelijk object dan een zgn. 'faseverschuiving' mee. ipv op 0 te beginnen, laat je hem op 1/4e pi beginnen. en een op 3/4e pi, en een op -1/4e pi, en -3/4e pi. de totale sinusfunctie is dus ooghoogte*sin(omloopversnelling*(x+fase))+hoogteverschuiving.

kwestie van weten wat de eenheidscirkel doet. ik weet dat dit een gruwelijk inefficiente oplossing is t.o.v. een 'echte' 3d engine, en programmeertechnisch hoogstwaarschijnlijk een nachtmerrie, maar het werkt zelfs op een TI-82 rekenmachine, en het is super-eenvoudig om met z-factors te werken zodat je weet welk object op de voorgrond moet (afhankelijk van de x), en je kunt de kleur van het object (donker naar licht voor nog betere diepte-effecten) op dezelfde manier aanpassen. het is echter nog niet direct mogelijk om die cylinder te draaien, waardoor je rotatie misschien niet -zo- interessant wordt als je zelf wilt. daar valt echter ook een mouw aan te passen, maar vraag me niet hoe - het is dan weer makkelijker om van een 'echte' 3d engine gebruik te maken.

hou in de gedachten dat het dwaasheid is om complete polygonen uit te rekenen, maar dat je gewoon een bolletje met een wit-naar-grondkleur circular gradient wilt verplaatsen - m.a.w., een punt, geen polygoon.

teveel zooi, te weinig tijd


Verwijderd

Juist Yoozer klopt helemaal.
Had in Flash 5 een 3d engine gemaakt gebaseerd
op World Coordinaten. Functie gemaakt die die 3 punt x,y,z om
deed zetten in x en y.

Het heeft me heel wat zweet gekost maar is toch gelukt.

Verwijderd

Bedankt voor de uitleg (Yoozer) en de links. Ik snap 't principe van Yoozer, maar waar ik nog wel nieuwsgierig naar ben, hoe werkt een echte 3D engine dan? En is ie na te bouwen met ActionScript.

offtopic:
Niet dat ik de intensie heb om die te gaan bouwen, maar ik wil 'r wel meer over weten.

  • Yoozer
  • Registratie: Februari 2001
  • Laatst online: 20-01 22:02

Yoozer

minimoog

echte 3d engines.. heh, leuk onderwerp. ik heb daar ooit eens een mooi url-etje voor gehad. waar je mee zou kunnen beginnen is een raycasting engine. dan kun je al zoiets als wolfenstein of doom namaken.

maar dat valt een beetje buiten de scope van je originele opdracht. anyway, de puntjes.

http://gpp.netfirms.com/cgi-bin/resource.cgi?graph_3drotate

kijk daar maar eens. er zijn tonnen aan white-papers geschreven over 3d engines. als het goed is heeft flash mx er echter een ingebouwde, dus daar zou je er wel mee moeten komen.

teveel zooi, te weinig tijd


  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

er zijn tonnen aan white-papers geschreven over 3d engines. als het goed is heeft flash mx er echter een ingebouwde, dus daar zou je er wel mee moeten komen.
oww vertel? :) dan moet dat zoiets zijn als:
JavaScript:
1
var my3Dengine = new 3DEngine();


;) nee geintje natuurlijk...Director heeft een eigen 3d engine API, shockwave 3D. Ik neem me iedere keer weer voor om weer eens wat meer met Director te gaan doen, maar het komt er maar niet van. :/

"You're only as good, as what you did last week."


Verwijderd

ik gebruik deze routine om een 3d punt te vertalen naar een 2d scherm positie..

3d punt - 3dx, 3dy, 3dz
scale - moet groter zijn dan nul in ieder geval
schermpositie - voor positioneren van je 3d objectje.

scherm_x=Math.floor(((3dx/scale)*(1.0/(2.5+(3dz/scale)))*schermpositie));
scherm_y=Math.floor(((3dy/scale)*(1.0/(2.5+(3dz/scale)))*schermpositie));

daar begint het allemaal zo mee..
Pagina: 1