BG Development


  Reply to this topicStart new topicStart Poll

> въпрос за 3Д графика и Three.js
ТК_
Публикувано на: 10-12-2018, 15:41
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 22
Регистриран на: 04.08.18



Здравейте,

опитвам да преизползвам малко код на базата на Three.js подобен на този :

CODE
// изчислява на издутина
function cossers(u,v,params)
{
      function cosser(t, min, max, last)
      {
            if (t<min && !last) return cosser(t+1, min, max, true);
            if (t>max && !last) return cosser(t-1, min, max, true);
            if( min<=t && t<=max )
                  return 0.5+0.5*Math.cos( (t-min)/(max-min)*2*Math.PI-Math.PI );
            return 0;
      }
      var r = 1;
      for (var i=0; i<params.length; i++)
            r += cosser(u,params[i][0],params[i][1])*cosser(v,params[i][2],params[i][3])/params[i][4];
      return r;
}

// създаване на параметрична повърхност чрез функцията ѝ
function parametricImage(tex,col,func)
{
      var image = new THREE.Object3D();
      image.add( new THREE.Mesh(
            new THREE.ParametricGeometry(func, 32, 32),
            new THREE.MeshPhongMaterial({color:col,shininess:100,map: tex})
      ));
      return image;
}

// форма на глава като параметрична повърхнина
function формаГлава(params)
{
      return parametricImage(texHead,colors[0],function (u,v)
      {
            var r = cossers(u,v,[[0.4,0.9,0,1,-3],[0,1,0,0.1,3],[0,1,0.9,1,3],[1.00,1.05,0.55,0.85,-5],[1.00,1.05,0.15,0.45,-5],[0.9,0.94,0.25,0.75,-5],[0.0,0.7,0.05,0.95,3],[-0.2,0.2,-0.15,1.15,-4],[-0.3,0.3,0.15,0.85,3]]);
            u = 360*u;
            v = 180*v-90;
            k = (1+(feminine?1:2)*sin(u)*cos(v))/4;
            return new THREE.Vector3(
                  headScale*r*params[0]*cos(u)*cos(v),
                  headScale*r*params[1]*sin(u)*cos(v),
                  headScale*(r+k)*params[2]*sin(v));
      });
}


Проблем ми е, че не съм ползвал такива параметрични криви за 3Д графика
и не схващам как става параметризирането за затваряне на желаната повърхност.

Моля за съвет/ насока къде да почерпя информация.
PMEmail Poster
Top
jason89
Публикувано на: 28-10-2019, 16:47
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 1
Регистриран на: 28.10.19



Thanks)


--------------------
Лучшие игровые автоматы казино МаксБет https://maxbetcazino.com/ на деньги
PMEmail Poster
Top
PxL
Публикувано на: 29-10-2019, 03:10
Quote Post


Group Icon
Име: Димитър Т. Димитров
Група: VIP
Ранг: Почетен член

Мнения: 3082
Регистриран на: 26.04.05



Виж в официалната им документация, имат конкретен пример:
https://threejs.org/docs/#api/en/geometries...ametricGeometry

п.п. Аз, пък и аз се вързах на postdigger icon_smile.gif

Това мнение е било редактирано от PxL на 29-10-2019, 12:51


--------------------
void putchar(char c);int main(){int x,c=1,i;for(i=0;(x="PxLY2H4:2E;7231?=68255A5S5P9N:N9O84111H861I85111G9N:O811O812M<G33911EAEDBECE22169D1=2k"[i+++3]);)while(x-->'0')putchar((!(++c%'('))?0x0a:33^(i&1));}
PMEmail PosterUsers Website
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0