Français
PHP, HTML & JavaScript- Forum

3D Grafik - WebGL avec three.js

 
- page 1 -



HofK
sur une appeler Tipp de IF hin, habe je mir la fois
three.js  [...]  angeschaut. là  [...]  (entier unten) qui ersten Resultate.
 
31.01.2016  
 



 
- page 43 -



HofK
p.specht (24.06.2021)
je serait volontiers im roten voiture mitfahren - ou bien avec einer mitlaufenden caméra derrière elle zuschauen... (un Depp peux sich plus désirer comme 10 constructeur construire)


aussi sur discourse donnais es une Vorschlag:

( Usnul / traduit)
" ... je serait proposer, qui Startaufstellung trop entfernen et peut-être un bisschen avec qui caméra trop spielen, um es interessanter trop gestalten. peut-être un Überkopfmodus, um einem voiture trop folgen? ...  "

mon Antwort ( traduit)

"oui, on pourrait un richtiges Rennen draus faire, avec Gelände, Rampen et Brücken et mehreren Fahrzeugen. Bessere Modelle, comme je vous simple kopiert habe. et en supplément encore Abzweigungen qui rue, siehe
Créer a curved plane surface which dynamically changes its size - #20 by hofk [...] 

mais c'est pas mon Ding. je selbst habe aussi encore nie Computerspiele gespielt. je benutze aussi aucun Modellierungssoftware. je interessiere mich pour mathématique Zusammenhänge et Algorithmen. cela peux on voyons, si on sich mon Github-page anschaut.

mais peut-être nimmt es oui quelqu'un comme Anregung et pouvoir quelque chose daraus. Es peux ensuite ici angehängt volonté.
 "
 
27.06.2021  
 




HofK
chez qui CPU Simulation gibt es Fortschritte.

qui CPU clock funktioniert dans wesentlichen partager. il peut qui Taktfrequenz au cours de des Programmlaufs verändern et qui binäre montre zählt avec. Dabei sommes encore pas alle Varianten implementiert. chez cette l'affaire peux on pas de XProfan transcrire, mais muss qui identische Wirkungsweise avec anderen Mitteln erreichen.



Aktuell là  [...] 
 
30.06.2021  
 




HofK
dans qui "Sommerpause" ist dans diesem l'an chez Je ne viel bezüglich three.js passiert.

suis justement la fois en supplément gekommen, qui vielen Beispiele aus discourse dans qui recueil trop prendre. Lohnt sich wieder la fois reinzuschauen.  [...] 

Es donnais une Frage trop einem Video sur einem Rechteck avec abgerundeten Ecken.  [...] 
en supplément habe je une entsprechende Geometrie ( indexed et non indexed) gebastelt.





Siege aussi  [...] 
 
06.08.2021  
 




HofK
dans Erweiterung des Rechtecks avec abgerundeten Ecken habe je sur une Frage hin  [...]  statt einer 2D Surface une 3D Geometrie erzeugt.

cela entspricht einer Extrusion. cela Problem était qui Textur.

à dem Beispiel peux on très joli qui Berechnung de uv Werten étudier. Pour avant- et Rückseite ist cela droite simple, pour den cadre quelque chose aufwändiger.





chez discourse  [...] 
là regarder  [...] 

-----------------------------------------------------------------------------
// non indexed BufferGeometry

function RoundEdgedBoxFlat( w, h, t, r, s ) {// width, height, thick, radius corner, smoothness

    // helper const's and let's
    const wi = w / 2 - r;// inner width, half
    const hi = h / 2 - r;// inner height, half
    const w2 = w / 2;// half width
    const h2 = h / 2;// half height
    let ul = r / w;// u left front side
    let ur = ( w - r ) / w;// u right front side
    const vl = r / h;// v low
    const vh = ( h - r ) / h;// v high
    let phia, phib, xc, yc, uc, vc, cosa, sina, cosb, sinb;
    let positions = [];
    let uvs = [];
    // for front side
    let t2 = t / 2;// +  half thick
    let u0 = ul;
    let u1 = ur;
    let u2 = 0;
    let u3 = 1;
    let sign = 1;

    for( let k = 0; k < 2; k ++ ) {// front and back side

        positions.push(
        -wi, -h2, t2,  wi, -h2, t2,  wi, h2, t2,
        -wi, -h2, t2,  wi,  h2, t2, -wi, h2, t2,
        -w2, -hi, t2, -wi, -hi, t2, -wi, hi, t2,
        -w2, -hi, t2, -wi,  hi, t2, -w2, hi, t2,
        wi, -hi, t2,  w2, -hi, t2,  w2, hi, t2,
        wi, -hi, t2,  w2,  hi, t2,  wi, hi, t2
        );
        uvs.push(
        u0,  0, u1,  0, u1,  1,
        u0,  0, u1,  1, u0,  1,
        u2, vl, u0, vl, u0, vh,
        u2, vl, u0, vh, u2, vh,
        u1, vl, u3, vl, u3, vh,
        u1, vl, u3, vh,	u1, vh
        );
        phia = 0;

        for ( let i = 0; i < s * 4; i ++ ) {

            phib = Math.PI * 2 * ( i + 1 ) / ( 4 * s );
            cosa = Math.cos( phia );
            sina = Math.sin( phia );
            cosb = Math.cos( phib );
            sinb = Math.sin( phib );
            xc = i < s || i >= 3 * s ? wi : -wi;
            yc = i < 2 * s ? hi : -hi;
            positions.push( xc, yc, t2,  xc + r * cosa, yc + r * sina, t2,  xc + r * cosb, yc + r * sinb, t2 );
            uc = i < s || i >= 3 * s ? u1 : u0;
            vc = i < 2 * s ? vh : vl;
            uvs.push( uc, vc, uc + sign * ul * cosa, vc + vl * sina, uc + sign * ul * cosb, vc + vl * sinb );
            phia = phib;

        }

        // for back side
        t2 = -t2;// - half thick
        u0 = ur;// right left exchange
        u1 = ul;
        u2 = 1;
        u3 = 0;
        sign = -1;

    }

    // framing
    t2 = t / 2;// + half thick (again)
    positions.push(
    -wi, -h2,  t2, -wi, -h2, -t2,  wi, -h2, -t2,
    -wi, -h2,  t2,  wi, -h2, -t2,  wi, -h2,  t2,
    w2, -hi,  t2,  w2, -hi, -t2,  w2,  hi, -t2,
    w2, -hi,  t2,  w2,  hi, -t2,  w2,  hi,  t2,
    wi,  h2,  t2,  wi,  h2, -t2, -wi,  h2, -t2,
    wi,  h2,  t2, -wi,  h2, -t2, -wi,  h2,  t2,
    -w2,  hi,  t2, -w2,  hi, -t2, -w2, -hi, -t2,
    -w2,  hi,  t2, -w2, -hi, -t2, -w2, -hi,  t2
    );
    const cf = 2 * ( ( w + h - 4 * r ) + Math.PI * r );// circumference
    const cc4 = Math.PI * r / 2 / cf// circle-circumference / 4 / circumference
    u0 = 0;
    u1 = 2 * wi / cf;
    u2 = u1 + cc4;
    u3 = u2 + 2 * hi / cf;
    const u4 = u3 + cc4;
    const u5 = u4 + 2 * wi / cf;
    const u6 = u5 + cc4;
    const u7 = u6 + 2 * hi / cf;
    uvs.push(
    u0, 1,  0, 0, u1, 0,
    u0, 1, u1, 0, u1, 1,
    u2, 1, u2, 0, u3, 0,
    u2, 1, u3, 0, u3, 1,
    u4, 1, u4, 0, u5, 0,
    u4, 1, u5, 0, u5, 1,
    u6, 1, u6, 0, u7, 0,
    u6, 1, u7, 0, u7, 1
    );
    phia = 0;
    let u, j, j1;
    const ccs = cc4 / s;// partial value according to smoothness

    for ( let i = 0; i < s * 4; i ++ ) {

        phib = Math.PI * 2 * ( i + 1 ) / ( 4 * s );
        cosa = Math.cos( phia );
        sina = Math.sin( phia );
        cosb = Math.cos( phib );
        sinb = Math.sin( phib );
        xc = i < s || i >= 3 * s ? wi : -wi;
        yc = i < 2 * s ? hi : -hi;
        positions.push( xc + r * cosa, yc + r * sina, t2,  xc + r * cosa, yc + r * sina, -t2,  xc + r * cosb, yc + r * sinb, -t2 );
        positions.push( xc + r * cosa, yc + r * sina, t2,  xc + r * cosb, yc + r * sinb, -t2,  xc + r * cosb, yc + r * sinb,  t2 );
        u = i < s ? u3 : ( i < 2 * s ? u5 : ( i < 3 * s ? u7 : u1 ) );// Attention! different start to front/back
        j = i % s;
        j1 = j + 1;
        uvs.push( u + j * ccs, 1,  u + j  * ccs, 0,  u + j1 * ccs, 0 );
        uvs.push( u + j * ccs, 1,  u + j1 * ccs, 0,  u + j1 * ccs, 1 );
        phia = phib;

    }

    const geometry = new THREE.BufferGeometry( );
    geometry.setAttribute('position', new THREE.BufferAttribute( new Float32Array( positions ), 3 ) );
    geometry.setAttribute('uv', new THREE.BufferAttribute( new Float32Array( uvs ), 2 ) );
    // add multimaterial groups for front, back, framing
    const vtc = ( 6 + 4 * s ) * 3;// vertex count one side
    geometry.addGroup ( 0, vtc , 0 );
    geometry.addGroup ( vtc, vtc , 1 );
    geometry.addGroup ( 2 * vtc, 24 +  2 * 3  *  4 * s, 2 );
    return geometry;

}

 
17.09.2021  
 




HofK
un interessantes Problem:

Kreis avec unscharfem rebord aus individuel Zufallspartikeln erstellen >>>  [...] 

en supplément fiel mir tout de suite une Solution pour une Kugel de 2018 un, qui je dans qui recueil habe.  [...] 

avec einigen Changements et Portierung sur qui aktuelle Version de three.js ergibt sich cela:



là live: [...] 

et dans einer besseren Version [...] 
<!DOCTYPE html>
<!-- https://discourse.threejs.org/t/create-circle-with-fuzzy-edge-asticot-of-individual-random-particles/30150/6 -->
<!-- lac alors
https://discourse.threejs.org/t/how-déplacer-espace-points-to-sphere/1836/2
and
https://codepen.io/looeee/pen/LQLQRd
-->
<head>
<title> PointsToCircleRandomMultiple </title>
<meta charset="utf-8" />
<style>

body {

    margin: 0;
    overflow: hidden;

}

</style>
</head>
<body> </body>
<script type="module">
// @author  looeee - strongly changed by hofk
importation * as THREE à partir de "../jsm/three.module.132.js";
importation { OrbitControls } à partir de "../jsm/OrbitControls.132.js";
let camera, renderer, scene;
const v = new THREE.Vector2();
let r;
let positions = [];
const distributionA = n => Math.pow( n, 1 / 4 );
const distributionB = n => 0.2 * Math.pow( n, 1 / 2 );
const distributionC = n => 0.6 * Math.pow( Math.random( ), 2 );
window.addEventListener('resize', onWindowResize );
init();
randomPoints();
animate();

function onWindowResize() {

    camera.aspect = window.innerWidth / window.innerHeight;
    camera.updateProjectionMatrix();
    renderer.setSize( window.innerWidth, window.innerHeight );

}

function init() {

    renderer = new THREE.WebGLRenderer();
    renderer.setSize( window.innerWidth, window.innerHeight );
    renderer.setPixelRatio( window.devicePixelRatio );
    document.body.appendChild( renderer.domElement );
    scene = new THREE.Scene();
    camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 0.1, 1000 );
    camera.position.set( 2, -3, 4 );
    const controls = new OrbitControls( camera, renderer.domElement );

}

function randomPoints() {

    //      count, rMin, distribution
    pushpos( 1200, -0.1, distributionA );
    pushpos( 2000,  0.8, distributionB );
    pushpos(  300, 1.05, distributionC );
    const geometry = new THREE.BufferGeometry( );
    geometry.setAttribute('position', new THREE.Float32BufferAttribute( positions, 3 ) );
    const matériel = new THREE.PointsMaterial( { color: 0xffff34, size: 0.001 } );
    const particles = new THREE.Points(geometry, matériel);
    scene.add( particles );

}

function animate() {

    requestAnimationFrame( animate );
    renderer.render( scene, camera );

}

// .......................

function pushpos( count, rMin, distribution ) {

    for ( let i = 0; i < count; i ++ ) {

        const phi = Math.random( ) * Math.PI * 2;
        const rnd = Math.random( )
        r = rMin + distribution( rnd );
        v.x = r * Math.cos( phi );
        v.y = r * Math.sin( phi );
        positions.push( v.x, v.y, 0 );

    }

}

</script>
</html>
 
23.09.2021  
 




HofK
avec qui CPU Simulation ca va "très zäh" voran.

Um pas den Überblick trop perdre et là je es de toute façon vorhatte, habe je zwischenzeitlich qui Windows variante dans Englisch erstellt. en supplément aussi qui gesamte Documentation traduit. Besonders zeitrauben qui vielen Kommentare im Programmcode.

là encore pas final überprüft, muss qui Veröffentlichung encore attendre.

chez qui Browservariante zeigt sich pour weiteren Tests, dass qui DIV Funktion trop komplex ist um vous dans qui animate Funktion trop décomposer. Mag son, dass es theoretisch possible ist, mais je werde vous aus qui manifestation dans qui ALU herauslassen. qui Kommentare et Tooltipps sommes maintenant sur Englisch.

qui Stand sur  [...] 
 
10.10.2021  
 




HofK
cela était maintenant viel mühsame Kleinarbeit

Ab tout de suite ist qui neue page cpusimulation.hofk.de  [...]  online

vous ist eh bien zweisprachig.

aussi alle Dokumente, cela Simulationsprogramm ( Programmoberfläche, Kommentare im Sourcecode) et qui Beispiele Assembler sommes eh bien dans allemande et Englisch disponible.

en ausgehend peux je qui weitere travail à qui Browserversion avec three.js voranbringen. aussi là gibt es encore un peu trop 1faire.  [...] 
 
20.10.2021  
 




HofK
chez qui weiteren travail à qui Browserversion habe je encore une Bug dans qui englischen Version Windows entdeckt, qui chez qui Übertragung entstanden ist.



il ist beseitigt. chez besoin alle Fichiers DE et EN récente herunterladen.  [...] 

qui Fichiers aussi aussi GitHub:
DE  [...] 
EN  [...] 
 
22.10.2021  
 




HofK
un weiterer Baustein qui Simulation ist funktionsfähig.

store to clipboard
load
relocate

marcher maintenant comment gewollt.

Im Unterschied zur Windows Version ist aucun Speicherung dans lokalen Ordnern possible. comme Ersatz wird dans qui Zwischenablage gespeichert.

qui Verschiebung verzichtet dans cette Browserversion sur qui komplette Sicherung des RAM avant qui Verschiebung. cela gäbe plutôt chaos dans qui Zwischenablage.

chez besoin peux on auparavant une Gesamtspeicherung selbst anstoßen. cela erscheint mir übersichtlicher.

qui Stand ist ab maintenant sous ... dev1  [...]  trop voyons. qui vorherige variante ... dev bleibt eh bien inchangé sur ihrem letzten Stand.
 
02.11.2021  
 




HofK
par une Diskussion sur 2D versus 3D ( qui Simulation ist oui abgesehen de den Effekten durchsichtige Bitboxen et y Torus bzw. Zylinder pour qui Bitwerte 2D ) suis je puis gekommen, mir encore einmal qui représentation qui Schrift genauer anzuschauen.

par qui canvas- Textur ist vous chez très kleinem et quelque chose größerem la distance qui caméra pas très tranchant et wirklich bien lesbar. un 3D Text ist mais aufwändig et pas toujours bien lesbar.

il peut qui Schrift aus einem json Font aussi 2D erzeugen.

cela habe je getestet.

Dabei J'ai eu un Problem avec qui Effizienz et en supplément une Frage chez discourse gestellt. Es donnais wenig Publikum et aucun Antwort et so musste je mich wieder la fois selber fouiller.

Problem à qui canvas Version ist qui relativ hohe Zeitaufwand à lettres initiales Textes comme Meshes trop erstellen. ici devrait on une Startbildschirm insérer. cela comme mir pour qui Simulation pas. Aussi wären erhebliche strukturelle Changements am projet nötig, qui beim derzeitigen Fortschritt pas unproblematisch sommes. aussi qui Entfernung vom XProfan Quellcode wird encore größer.

je überlege mir le reste quelque chose.

qui Link trop discourse  [...] 

cela Testbeispiel dans seiner effizienten forme qui Solution. qui Bildschirm bleibt kurz noir!  [...] 

une Version avec 3200 Texten 3D angeordnet.  [...] 
 
11.11.2021  
 




HofK
Geschafft!!!


qui web Version qui CPU Simulation ist fertig  [...] 

Siehe là sous Doku et Télécharger.
 
19.11.2021  
 




HofK
Wiederum de einer Frage sur discourse  [...]  ausgehend, habe je une Morph-Geometrie konstruiert.

Dabei konnte je sur qui gewaffelte Dreiecksteilung aus meinem Addon THREEf.js  [...]  zurückgreifen.



un Würfel modifié sich pour einer libre wählbaren Zeitfunktion dans un Kugel et je pour Funktion aussi wieder zurück.



Siehe sur discourse  [...] 
GitHub  [...] 

Ausprobieren  [...] 
 
25.11.2021  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

356.214 Views

Untitledvor 0 min.
Paul Glatz vor 16 Tagen
Uwe ''Pascal'' Niemeier23.03.2025
Manfred Barei18.03.2025
R.Schneider05.03.2025
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie