| 299 | |
| 300 | V formatu STL ni možno nastavljati barve. Če želimo posameznim delom nastaviti barvo |
| 301 | lahko to storimo tako, da naložimo vsak kos posebej in mu nastavimo material. |
| 302 | Če sestavavljamo modele z uporabo več enakih kosov je ugodno, da naložimo le |
| 303 | osnovne dele, ki jih potem kopiramo in prestavljamo po prostoru in tako sestavimo |
| 304 | celoten sestav. Nalaganje posameznih modelov je asinhrono, kar pomeni da se hkrati |
| 305 | nalagajo in ni zagotovljen vrstni red. S takim načinom prenašanja modelov do |
| 306 | brskalnika se čas do prvega prikaza sestava skrajša. Je pa zaradi tega potrebno |
| 307 | nekoliko več programiranja transformacij in kopiranje položajev točk. Zmanjša |
| 308 | se tudi poraba pomnilnika v brskalniku, kar omogoča hitrejše obračanje sestava. |
| 309 | |
| 310 | [http://jsc3d.googlecode.com/svn/trunk/jsc3d/docs/index.html Dokumentacija objektov SJC3D] |
| 311 | nam je lahko v pomoč pri programiranju v JavaScriptu. |
| 312 | |
382 | | |
383 | | }}} |
| 396 | {{{ |
| 397 | #!html |
| 398 | <script src="/vaje/raw-attachment/wiki/PythonOcc/elbow/jsc3d.min.js"></script> |
| 399 | <script type="text/javascript"> |
| 400 | function onLoad2(){ |
| 401 | var canvas = document.getElementById('cv2'); |
| 402 | canvas.width = 0.9*window.innerWidth; |
| 403 | canvas.height = canvas.width/1.6; |
| 404 | var viewer = new JSC3D.Viewer(canvas); |
| 405 | //viewer.setParameter('SceneUrl', '/vaje/raw-attachment/wiki/PythonOcc/elbow/pipe.stl'); |
| 406 | viewer.setParameter('BackgroundColor1', '#FFFFFF'); |
| 407 | viewer.setParameter('BackgroundColor2', '#383840'); |
| 408 | viewer.setParameter('InitRotationX', 30); |
| 409 | viewer.setParameter('InitRotationY', 30); |
| 410 | viewer.setParameter('InitRotationZ', 30); |
| 411 | viewer.init(); |
| 412 | |
| 413 | var theScene = new JSC3D.Scene; |
| 414 | var totalParts = 2; |
| 415 | var numOfLoaded = 0; |
| 416 | |
| 417 | var onPipeLoaded = function(scene) { |
| 418 | var meshes = scene.getChildren(); |
| 419 | for (var i=0; i<meshes.length; i++) { |
| 420 | material = new JSC3D.Material(); |
| 421 | material.diffuseColor = 0x3f3f7f; |
| 422 | meshes[i].setMaterial(material); |
| 423 | theScene.addChild(meshes[i]); |
| 424 | } |
| 425 | if (++numOfLoaded == totalParts) |
| 426 | viewer.replaceScene(theScene); |
| 427 | }; |
| 428 | |
| 429 | var onElbowLoaded = function(scene) { |
| 430 | var meshes = scene.getChildren(); |
| 431 | for (var i=0; i<meshes.length; i++) { |
| 432 | material = new JSC3D.Material(); |
| 433 | material.diffuseColor = 0x0ab610; |
| 434 | material.transparency = 0.4; |
| 435 | meshes[i].setMaterial(material); |
| 436 | theScene.addChild(meshes[i]); |
| 437 | |
| 438 | var xformMat = new JSC3D.Matrix3x4; |
| 439 | var rotMat = new JSC3D.Matrix3x4; |
| 440 | xformMat.identity(); |
| 441 | rotMat.identity(); |
| 442 | rotMat.rotateAboutZAxis(90); |
| 443 | xformMat.multiply(rotMat); |
| 444 | xformMat.translate(500, 0, 0); |
| 445 | |
| 446 | myMesh = new JSC3D.Mesh(); |
| 447 | myMesh.vertexBuffer = new Array( meshes[i].vertexBuffer.length); |
| 448 | myMesh.faceNormalBuffer = new Array( meshes[i].faceNormalBuffer.length); |
| 449 | myMesh.indexBuffer = meshes[i].indexBuffer; |
| 450 | // transform and rewrite vertex coordinates |
| 451 | JSC3D.Math3D.transformVectors(xformMat, meshes[i].vertexBuffer, myMesh.vertexBuffer); |
| 452 | // transform and rewrite face normals |
| 453 | JSC3D.Math3D.transformVectors(rotMat, meshes[i].faceNormalBuffer, myMesh.faceNormalBuffer); |
| 454 | myMesh.setMaterial(material); |
| 455 | myMesh.init(); |
| 456 | theScene.addChild(myMesh); |
| 457 | } |
| 458 | if (++numOfLoaded == totalParts) |
| 459 | viewer.replaceScene(theScene); |
| 460 | }; |
| 461 | |
| 462 | |
| 463 | var pipe_loader = new JSC3D.StlLoader; |
| 464 | pipe_loader.onload = onPipeLoaded; |
| 465 | pipe_loader.loadFromUrl('/vaje/raw-attachment/wiki/PythonOcc/elbow/pipe.stl'); |
| 466 | var elbow_loader = new JSC3D.StlLoader; |
| 467 | elbow_loader.onload = onElbowLoaded; |
| 468 | elbow_loader.loadFromUrl('/vaje/raw-attachment/wiki/PythonOcc/elbow/elbow.stl'); |
| 469 | |
| 470 | viewer.update(); |
| 471 | } |
| 472 | window.onload = window.onresize = function() {onLoad(); onLoad2();} |
| 473 | </script> |
| 474 | <canvas id="cv2" width="600" height="400" |
| 475 | style="background:lightgrey; border: 1px solid; float:center;" ></canvas> |
| 476 | }}} |
| 477 | }}} |