XProfan Forum Community: Juhu, nach Serverausfall: Es sollte (fast) alles wieder funktionieren!

Español
PHP, HTML & JavaScript- Foro

3D Grafik - WebGL con three.js

 
- Página 1 -



HofK
Auf una heißen Tipp de IF hin, Yo me de tiempo
three.js  [...]  angeschaut. Como  [...]  (bastante unten) el ersten Resultate.
 
31.01.2016  
 



 
- Página 43 -



HofK
p.specht (24.06.2021)
Yo sería gerne en el roten Auto mitfahren - oder con uno mitlaufenden Kamera detrás de él zuschauen... (Ein Depp kann se mehr wünschen como 10 Baumeister bauen)


Auch en discourse gab lo una Vorschlag:

( Usnul / traducido)
" ... Yo sería vorschlagen, el Startaufstellung a entfernen y tal vez una bisschen con el Kamera a spielen, en lo interessanter a gestalten. Tal vez una Überkopfmodus, en una Auto a folgen? ...  "

Mi Antwort ( traducido)

"Sí, uno podría una richtiges Rennen draus hacer, con Gelände, Rampen y Brücken y más Fahrzeugen. Bessere Modelle, como Yo ellos simplemente kopiert habe. Und dazu todavía Abzweigungen el Straße, siehe
Crear a curved plane surface which dynamically changes its size - #20 by hofk [...] 

Aber el es no mein Ding. Yo incluso habe auch todavía nie Computerspiele gespielt. Yo benutze auch no Modellierungssoftware. Yo interessiere mich para matemático Zusammenhänge y Algorithmen. Das puede ser sehen, si uno se mi Github-Página anschaut.

Aber tal vez nimmt lo sí alguien como Anregung y macht algo lo. Lo kann entonces hier angehängt voluntad.
 "
 
27.06.2021  
 




HofK
En CPU Simulation hay Fortschritte.

El CPU clock funktioniert en wesentlichen Teilen. Se puede el Taktfrequenz während des Programmlaufs verändern y el binäre Uhr zählt con. Dabei son todavía no todos Varianten implementiert. En dieser Sache puede ser no de XProfan abschreiben, pero muss el identische Wirkungsweise con otro Mitteln erreichen.



Aktuell como  [...] 
 
30.06.2021  
 




HofK
In el "Sommerpause" es en diesem Jahr no yo en el viel bezüglich three.js passiert.

Bin gerade veces dazu gekommen, el vielen Beispiele de discourse en el Sammlung a tomar. Lohnt se otra vez veces reinzuschauen.  [...] 

Lo gab una Cuestión a una Video en una Rechteck con abgerundeten Ecken.  [...] 
Dazu Yo una entsprechende Geometrie ( indexed y non indexed) gebastelt.





Siege auch  [...] 
 
06.08.2021  
 




HofK
In Erweiterung des Rechtecks con abgerundeten Ecken Yo en una Cuestión hin  [...]  en lugar de uno 2D Fläche una 3D Geometrie producido.

Das entspricht uno Extrusion. Das Problema war el Textur.

An el Ejemplo puede ser muy schön el Berechnung de uv Werten studieren. Für Vor- y Rückseite es el bastante simplemente, para el Rahmen algo aufwändiger.





En discourse  [...] 
Dort ansehen  [...] 

-----------------------------------------------------------------------------
// 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 );
    volver geometry;

}

 
17.09.2021  
 




HofK
Ein interessantes Problema:

Kreis con unscharfem Rand de individual Zufallspartikeln redactar >>>  [...] 

Dazu fiel me inmediatamente una solución a una Kugel de 2018 una, el Yo en el Sammlung habe.  [...] 

Mit algunos Los cambios y Portierung en el aktuelle Versión de three.js ergibt se el:



Dort live: [...] 

y uno mejor Version [...] 
<!DOCTYPE html>
<!-- https://discourse.threejs.org/t/create-circle-with-fuzzy-edge-made-of-individual-random-particles/30150/6 -->
<!-- see also
https://discourse.threejs.org/t/how-move-all-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
import * as THREE from "../jsm/three.module.132.js";
import { OrbitControls } from "../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 material = new THREE.PointsMaterial( { color: 0xffff34, size: 0.001 } );
    const particles = new THREE.Points(geometry, material);
    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
Mit el CPU Simulation es "muy zäh" voran.

Um no el Überblick a verlieren y como Yo ohnehin vorhatte, Yo zwischenzeitlich el Windows Variante en Inglés erstellt. Dazu auch el gesamte Documentación traducido. Besonders zeitrauben el vielen Kommentare en el Programmcode.

Como todavía no final überprüft, muss el Veröffentlichung todavía warten.

En Browservariante zeigt se después de más Tests, dass el DIV Función a komplex es en ellos en el animate Función a zerlegen. Mag ser, dass lo theoretisch posible es, pero yo voluntad ellos de el Demonstration en el ALU herauslassen. El Kommentare y Tooltipps son ahora en Inglés.

Der Stand en  [...] 
 
10.10.2021  
 




HofK
Das war ahora viel mühsame Kleinarbeit

Ab inmediatamente Es el neue Página cpusimulation.hofk.de  [...]  online

Sie es nun zweisprachig.

Auch todos Dokumente, el Simulationsprogramm ( Programmoberfläche, Kommentare en el Sourcecode) y el Beispiele Ensamblador son nun en Alemán y Inglés verfügbar.

Davon ausgehend kann Yo el weitere Arbeit a el Browserversion con three.js voranbringen. Auch como hay todavía una wenig a tun.  [...] 
 
20.10.2021  
 




HofK
En más Arbeit a el Browserversion Todavía una Bug en el englischen Windowsversion entdeckt, el en Übertragung entstanden es.



Er es beseitigt. En Bedarf todos Archivos DE y EN neu herunterladen.  [...] 

El Archivos auch auch GitHub:
DE  [...] 
EN  [...] 
 
22.10.2021  
 




HofK
Ein weiterer Baustein el Simulation es funktionsfähig.

store to clipboard
load
relocate

trabajo ahora como gewollt.

Im Diferencia a Windows Versión es no Speicherung en lokalen Ordnern posible. Als Ersatz se en el Zwischenablage gespeichert.

El Verschiebung verzichtet en dieser Browserversion en el komplette Sicherung des RAM antes Verschiebung. Das gäbe más Chaos en el Zwischenablage.

En Bedarf puede ser vorher una Gesamtspeicherung incluso anstoßen. Das erscheint me übersichtlicher.

Der Stand es de ahora bajo ... dev1  [...]  a sehen. El vorherige Variante ... dev restos nun unverändert en ihrem letzten Stand.
 
02.11.2021  
 




HofK
Durch una Diskussion encima 2D versus 3D ( el Simulation es sí abgesehen de los Effekten durchsichtige Bitboxen y en él Torus o. Zylinder para el Bitwerte 2D ) bin Yo darauf gekommen, me todavía una vez el Darstellung el Schrift genauer anzuschauen.

Durch el canvas- Textur es ellos en muy kleinem y algo größerem Abstand el Kamera no muy scharf y wirklich bien lesbar. Ein 3D Texto es aber aufwändig y no siempre bien lesbar.

Se puede el Schrift de una json Font auch 2D erzeugen.

Das Yo getestet.

Dabei Tuve una Problema con el Effizienz y dazu una Cuestión en discourse gestellt. Lo gab wenig Publikum y no Antwort y así musste Yo mich otra vez veces selber durchwühlen.

Problema gegenüber el canvas Versión es el relativ hohe Zeitaufwand a initialen Textos como Meshes a redactar. Hier debería uno una Startbildschirm einfügen. Das gefällt me para el Simulation no. Außerdem wären erhebliche strukturelle Los cambios al Projekt nötig, cuando el derzeitigen Fortschritt no unproblematisch son. Auch el Entfernung vom XProfan Quellcode se todavía größer.

Yo überlege me todavía algo.

Der Link a discourse  [...] 

Das Testbeispiel en su effizienten Form el Solución. Der Bildschirm restos kurz schwarz!  [...] 

Un Versión con 3200 Texten 3D angeordnet.  [...] 
 
11.11.2021  
 




HofK
Geschafft!!!


El web Versión el CPU Simulation es fertig  [...] 

Siehe hay bajo Doku y Descargar.
 
19.11.2021  
 




HofK
Wiederum de uno Cuestión en discourse  [...]  ausgehend, Yo una Morph-Geometrie konstruiert.

Dabei podría I el gewaffelte Dreiecksteilung de mi Addon THREEf.js  [...]  zurückgreifen.



Ein Würfel verändert se después de uno frei wählbaren Zeitfunktion en un Kugel y je después de Función auch otra vez zurück.



Siehe en discourse  [...] 
GitHub  [...] 

Ausprobieren  [...] 
 
25.11.2021  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

360.333 Views

Untitledvor 0 min.
iFvor 3 min.
Walter15.06.2025
Paul Glatz23.05.2025
Uwe ''Pascal'' Niemeier23.03.2025
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie