| | 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 | }}} |