初涉Three.js

初涉Three.js

E83FD14E-8D30-44D6-A664-E2BC28F2A4D6.png

这就是我从网页上找到的GitHub的项目--一个基于Three.js的网页3D建模文件,有了这个,我部署在我的服务器上就可以让网站的访客找到这个建模器,但是目前这个东西好像还没有可以存储模型的地方,而且更多的来说,这个还是太粗糙了。我想要把它改进一下之后再来发展一个branch,然后提交到GitHub上去,毕竟直接拿了别人的来用,怎么也要好好的做出一番贡献啊,而且团队那边也好交差不是!!!

接下来直接Show代码了。不多废话。看看时间,要睡觉了!
话说今天才发现这个简书的图片上传功能,亏我刚刚部署服务器的时候还特意在网页那儿布了一个my photo的文件夹打算用来放网页图片的。待会就去删掉算了。不过,我放了几十张图片,随便抽一张放在这儿作鸡汤好了!!hiahia 我真是牛逼

CDDAA8F8-DC42-47C3-B77E-BCF2BCD6D794.png

诺,下边就是我随便放的图,瓦萨 不愧是我用爬虫下载的,就是碉堡了。那就顺路把爬虫代码放一下好了对了。代码如下

随手放图

然后的话,我就把我的爬虫放上来-----来来来 爬虫来啦

#coding=utf-8
import re
import urllib
def gethtml(url):
    page=urllib.urlopen(url)
    html=page.read()
    return html

def getimg(html):
    reg=r'src="(.+?\.jpg)"pic_ext'
    imgre=re.compile(reg)
    imglist=re.findall(imgre,html)
    x=0
    for imgurl in imglist:
        urllib.urlretrieve(imgurl,'%s.jpg'%x)
        x+=1
html=gethtml("http://tieba.baidu.com/p/2460150866")
print getimg(html)

然后随便放一段我的Three.js的代码装个逼就跑好了。娘的,室友都上床了,就我一个人在挑灯夜战了。渣渣。。。不多说贴图为证

D666F644-8517-4750-8E7F-E543A99F3758.png




下边上代码

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>three.js / editor</title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
    </head>
    <body ontouchstart="">
        <link href="css/main.css" rel="stylesheet" />
        <link id="theme" href="css/light.css" rel="stylesheet" />

        <script src="../build/three.min.js"></script>
        <script src="../examples/js/libs/system.min.js"></script>

        <script src="../examples/js/controls/EditorControls.js"></script>
        <script src="../examples/js/controls/TransformControls.js"></script>

        <script src="../examples/js/libs/jszip.min.js"></script>
        <script src="../examples/js/loaders/AMFLoader.js"></script>
        <script src="../examples/js/loaders/AWDLoader.js"></script>
        <script src="../examples/js/loaders/BabylonLoader.js"></script>
        <script src="../examples/js/loaders/ColladaLoader2.js"></script>
        <script src="../examples/js/loaders/FBXLoader.js"></script>
        <script src="../examples/js/loaders/GLTFLoader.js"></script>
        <script src="../examples/js/loaders/KMZLoader.js"></script>
        <script src="../examples/js/loaders/MD2Loader.js"></script>
        <script src="../examples/js/loaders/OBJLoader.js"></script>
        <script src="../examples/js/loaders/PlayCanvasLoader.js"></script>
        <script src="../examples/js/loaders/PLYLoader.js"></script>
        <script src="../examples/js/loaders/STLLoader.js"></script>
        <script src="../examples/js/loaders/TGALoader.js"></script>
        <script src="../examples/js/loaders/UTF8Loader.js"></script>
        <script src="../examples/js/loaders/VRMLLoader.js"></script>
        <script src="../examples/js/loaders/VTKLoader.js"></script>
        <script src="../examples/js/loaders/ctm/lzma.js"></script>
        <script src="../examples/js/loaders/ctm/ctm.js"></script>
        <script src="../examples/js/loaders/ctm/CTMLoader.js"></script>
        <script src="../examples/js/exporters/OBJExporter.js"></script>
        <script src="../examples/js/exporters/STLExporter.js"></script>

        <script src="../examples/js/loaders/deprecated/SceneLoader.js"></script>

        <script src="../examples/js/renderers/Projector.js"></script>
        <script src="../examples/js/renderers/CanvasRenderer.js"></script>
        <script src="../examples/js/renderers/RaytracingRenderer.js"></script>
        <script src="../examples/js/renderers/SoftwareRenderer.js"></script>
        <script src="../examples/js/renderers/SVGRenderer.js"></script>

        <link rel="stylesheet" href="js/libs/codemirror/codemirror.css">
        <link rel="stylesheet" href="js/libs/codemirror/theme/monokai.css">
        <script src="js/libs/codemirror/codemirror.js"></script>
        <script src="js/libs/codemirror/mode/javascript.js"></script>
        <script src="js/libs/codemirror/mode/glsl.js"></script>

        <script src="js/libs/esprima.js"></script>
        <script src="js/libs/jsonlint.js"></script>
        <script src="js/libs/glslprep.min.js"></script>

        <link rel="stylesheet" href="js/libs/codemirror/addon/dialog.css">
        <link rel="stylesheet" href="js/libs/codemirror/addon/show-hint.css">
        <link rel="stylesheet" href="js/libs/codemirror/addon/tern.css">
        <script src="js/libs/codemirror/addon/dialog.js"></script>
        <script src="js/libs/codemirror/addon/show-hint.js"></script>
        <script src="js/libs/codemirror/addon/tern.js"></script>
        <script src="js/libs/acorn/acorn.js"></script>
        <script src="js/libs/acorn/acorn_loose.js"></script>
        <script src="js/libs/acorn/walk.js"></script>
        <script src="js/libs/ternjs/polyfill.js"></script>
        <script src="js/libs/ternjs/signal.js"></script>
        <script src="js/libs/ternjs/tern.js"></script>
        <script src="js/libs/ternjs/def.js"></script>
        <script src="js/libs/ternjs/comment.js"></script>
        <script src="js/libs/ternjs/infer.js"></script>
        <script src="js/libs/ternjs/doc_comment.js"></script>
        <script src="js/libs/tern-threejs/threejs.js"></script>

        <script src="js/libs/signals.min.js"></script>
        <script src="js/libs/ui.js"></script>
        <script src="js/libs/ui.three.js"></script>

        <script src="js/libs/app.js"></script>
        <script src="js/Player.js"></script>
        <script src="js/Script.js"></script>

        <script src="../examples/js/effects/VREffect.js"></script>
        <script src="../examples/js/controls/VRControls.js"></script>
        <script src="../examples/js/vr/WebVR.js"></script>

        <script src="js/Storage.js"></script>

        <script src="js/Editor.js"></script>
        <script src="js/Config.js"></script>
        <script src="js/History.js"></script>
        <script src="js/Loader.js"></script>
        <script src="js/Menubar.js"></script>
        <script src="js/Menubar.File.js"></script>
        <script src="js/Menubar.Edit.js"></script>
        <script src="js/Menubar.Add.js"></script>
        <script src="js/Menubar.Play.js"></script>
        <script src="js/Menubar.View.js"></script>
        <!-- <script src="js/Menubar.Examples.js"></script> -->
        <script src="js/Menubar.Help.js"></script>
        <script src="js/Menubar.Status.js"></script>
        <script src="js/Sidebar.js"></script>
        <script src="js/Sidebar.Scene.js"></script>
        <script src="js/Sidebar.Project.js"></script>
        <script src="js/Sidebar.Settings.js"></script>
        <script src="js/Sidebar.Properties.js"></script>
        <script src="js/Sidebar.Object.js"></script>
        <script src="js/Sidebar.Geometry.js"></script>
        <script src="js/Sidebar.Geometry.Geometry.js"></script>
        <script src="js/Sidebar.Geometry.BufferGeometry.js"></script>
        <script src="js/Sidebar.Geometry.Modifiers.js"></script>
        <script src="js/Sidebar.Geometry.BoxGeometry.js"></script>
        <script src="js/Sidebar.Geometry.CircleGeometry.js"></script>
        <script src="js/Sidebar.Geometry.CylinderGeometry.js"></script>
        <script src="js/Sidebar.Geometry.IcosahedronGeometry.js"></script>
        <script src="js/Sidebar.Geometry.PlaneGeometry.js"></script>
        <script src="js/Sidebar.Geometry.SphereGeometry.js"></script>
        <script src="js/Sidebar.Geometry.TorusGeometry.js"></script>
        <script src="js/Sidebar.Geometry.TorusKnotGeometry.js"></script>
        <script src="../examples/js/geometries/TeapotBufferGeometry.js"></script>
        <script src="js/Sidebar.Geometry.TeapotBufferGeometry.js"></script>
        <script src="js/Sidebar.Geometry.LatheGeometry.js"></script>
        <script src="js/Sidebar.Material.js"></script>
        <script src="js/Sidebar.Animation.js"></script>
        <script src="js/Sidebar.Script.js"></script>
        <script src="js/Sidebar.History.js"></script>
        <script src="js/Toolbar.js"></script>
        <script src="js/Viewport.js"></script>
        <script src="js/Viewport.Info.js"></script>

        <script src="js/Command.js"></script>
        <script src="js/commands/AddObjectCommand.js"></script>
        <script src="js/commands/RemoveObjectCommand.js"></script>
        <script src="js/commands/MoveObjectCommand.js"></script>
        <script src="js/commands/SetPositionCommand.js"></script>
        <script src="js/commands/SetRotationCommand.js"></script>
        <script src="js/commands/SetScaleCommand.js"></script>
        <script src="js/commands/SetValueCommand.js"></script>
        <script src="js/commands/SetUuidCommand.js"></script>
        <script src="js/commands/SetColorCommand.js"></script>
        <script src="js/commands/SetGeometryCommand.js"></script>
        <script src="js/commands/SetGeometryValueCommand.js"></script>
        <script src="js/commands/MultiCmdsCommand.js"></script>
        <script src="js/commands/AddScriptCommand.js"></script>
        <script src="js/commands/RemoveScriptCommand.js"></script>
        <script src="js/commands/SetScriptValueCommand.js"></script>
        <script src="js/commands/SetMaterialCommand.js"></script>
        <script src="js/commands/SetMaterialValueCommand.js"></script>
        <script src="js/commands/SetMaterialColorCommand.js"></script>
        <script src="js/commands/SetMaterialMapCommand.js"></script>
        <script src="js/commands/SetSceneCommand.js"></script>

        <!-- <script type="text/javascript" src="https://www.dropbox.com/static/api/2/dropins.js" id="dropboxjs" data-app-key="qyqgfqd9j8z890t"></script> -->

        <script src="js/libs/html2canvas.js"></script>
        <script src="js/libs/three.html.js"></script>

        <script>

            window.URL = window.URL || window.webkitURL;
            window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;

            Number.prototype.format = function (){
                return this.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
            };

            //

            var editor = new Editor();

            var viewport = new Viewport( editor );
            document.body.appendChild( viewport.dom );

            var script = new Script( editor );
            document.body.appendChild( script.dom );

            var player = new Player( editor );
            document.body.appendChild( player.dom );

            var toolbar = new Toolbar( editor );
            document.body.appendChild( toolbar.dom );

            var menubar = new Menubar( editor );
            document.body.appendChild( menubar.dom );

            var sidebar = new Sidebar( editor );
            document.body.appendChild( sidebar.dom );

            var modal = new UI.Modal();
            document.body.appendChild( modal.dom );

            //

            editor.setTheme( editor.config.getKey( 'theme' ) );

            editor.storage.init( function () {

                editor.storage.get( function ( state ) {

                    if ( isLoadingFromHash ) return;

                    if ( state !== undefined ) {

                        editor.fromJSON( state );

                    }

                    var selected = editor.config.getKey( 'selected' );

                    if ( selected !== undefined ) {

                        editor.selectByUuid( selected );

                    }

                } );

                //

                var timeout;

                function saveState( scene ) {

                    if ( editor.config.getKey( 'autosave' ) === false ) {

                        return;

                    }

                    clearTimeout( timeout );

                    timeout = setTimeout( function () {

                        editor.signals.savingStarted.dispatch();

                        timeout = setTimeout( function () {

                            editor.storage.set( editor.toJSON() );

                            editor.signals.savingFinished.dispatch();

                        }, 100 );

                    }, 1000 );

                };

                var signals = editor.signals;

                signals.geometryChanged.add( saveState );
                signals.objectAdded.add( saveState );
                signals.objectChanged.add( saveState );
                signals.objectRemoved.add( saveState );
                signals.materialChanged.add( saveState );
                signals.sceneBackgroundChanged.add( saveState );
                signals.sceneFogChanged.add( saveState );
                signals.sceneGraphChanged.add( saveState );
                signals.scriptChanged.add( saveState );
                signals.historyChanged.add( saveState );

                signals.showModal.add( function ( content ) {

                    modal.show( content );

                } );

            } );

            //

            document.addEventListener( 'dragover', function ( event ) {

                event.preventDefault();
                event.dataTransfer.dropEffect = 'copy';

            }, false );

            document.addEventListener( 'drop', function ( event ) {

                event.preventDefault();

                if ( event.dataTransfer.files.length > 0 ) {

                    editor.loader.loadFile( event.dataTransfer.files[ 0 ] );

                }

            }, false );

            document.addEventListener( 'keydown', function ( event ) {

                switch ( event.keyCode ) {

                    case 8: // backspace

                        event.preventDefault(); // prevent browser back

                    case 46: // delete

                        var object = editor.selected;

                        if ( confirm( 'Delete ' + object.name + '?' ) === false ) return;

                        var parent = object.parent;
                        if ( parent !== null ) editor.execute( new RemoveObjectCommand( object ) );

                        break;

                    case 90: // Register Ctrl-Z for Undo, Ctrl-Shift-Z for Redo

                        if ( event.ctrlKey && event.shiftKey ) {

                            editor.redo();

                        } else if ( event.ctrlKey ) {

                            editor.undo();

                        }

                        break;

                    case 87: // Register W for translation transform mode

                        editor.signals.transformModeChanged.dispatch( 'translate' );

                        break;

                    case 69: // Register E for rotation transform mode

                        editor.signals.transformModeChanged.dispatch( 'rotate' );

                        break;

                    case 82: // Register R for scaling transform mode

                        editor.signals.transformModeChanged.dispatch( 'scale' );

                        break;

                }

            }, false );

            function onWindowResize( event ) {

                editor.signals.windowResize.dispatch();

            }

            window.addEventListener( 'resize', onWindowResize, false );

            onWindowResize();

            //

            var isLoadingFromHash = false;
            var hash = window.location.hash;

            if ( hash.substr( 1, 5 ) === 'file=' ) {

                var file = hash.substr( 6 );

                if ( confirm( 'Any unsaved data will be lost. Are you sure?' ) ) {

                    var loader = new THREE.FileLoader();
                    loader.crossOrigin = '';
                    loader.load( file, function ( text ) {

                        editor.clear();
                        editor.fromJSON( JSON.parse( text ) );

                    } );

                    isLoadingFromHash = true;

                }

            }

            /*
            window.addEventListener( 'message', function ( event ) {

                editor.clear();
                editor.fromJSON( event.data );

            }, false );
            */

            // VR

            var groupVR;

            // TODO: Use editor.signals.enteredVR (WebVR 1.0)

            editor.signals.enterVR.add( function () {

                if ( groupVR === undefined ) {

                    groupVR = new THREE.HTMLGroup( viewport.dom );
                    editor.sceneHelpers.add( groupVR );

                    var mesh = new THREE.HTMLMesh( sidebar.dom );
                    mesh.position.set( 15, 0, 15 );
                    mesh.rotation.y = - 0.5;
                    groupVR.add( mesh );

                    var signals = editor.signals;

                    function updateTexture() {

                        mesh.material.map.update();

                    }

                    signals.objectSelected.add( updateTexture );
                    signals.objectAdded.add( updateTexture );
                    signals.objectChanged.add( updateTexture );
                    signals.objectRemoved.add( updateTexture );
                    signals.sceneGraphChanged.add( updateTexture );
                    signals.historyChanged.add( updateTexture );

                }

                groupVR.visible = true;

            } );

            editor.signals.exitedVR.add( function () {

                if ( groupVR !== undefined ) groupVR.visible = false;

            } );

        </script>
    </body>
</html>

一段不过瘾,再来一段

/**
 * @author dforrer / https://github.com/dforrer
 * Developed as part of a project at University of Applied Sciences and Arts Northwestern Switzerland (www.fhnw.ch)
 */

/**
 * @param editorRef pointer to main editor object used to initialize
 *        each command object with a reference to the editor
 * @constructor
 */

var Command = function ( editorRef ) {

    this.id = - 1;
    this.inMemory = false;
    this.updatable = false;
    this.type = '';
    this.name = '';

    if ( editorRef !== undefined ) {

        Command.editor = editorRef;

    }
    this.editor = Command.editor;


};

Command.prototype.toJSON = function () {

    var output = {};
    output.type = this.type;
    output.id = this.id;
    output.name = this.name;
    return output;

};

Command.prototype.fromJSON = function ( json ) {

    this.inMemory = true;
    this.type = json.type;
    this.id = json.id;
    this.name = json.name;

};

差不多了 撤人了。_

上了床之后想起来还没有放我的网站 沙棘了 大好的装逼机会
现在也不迟

另外,建模器我开个后门好了,不然非注册用户进不去的后门

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容