Adding a 3D model to a website using THREE.JS

Поділитися
Вставка
  • Опубліковано 22 лис 2024

КОМЕНТАРІ • 133

  • @covenantersoldier9165
    @covenantersoldier9165 Рік тому +19

    Tip of the hat to you Gabriel, what a breakthrough. after all the videos of trying to host this thing through a server is somewhat hard being somewhat a technical idiot, just decided going blindside, with something no one talks about, skypack.
    This tutorial was the second most successful and easy to understand tutorials I've come across, simon devs videos are brilliant, a easy chill dev creating some really great projects, well done. [pat on back]

  • @ahmedgoniboulama8423
    @ahmedgoniboulama8423 Рік тому +16

    Nice video, it will be great to see another video in which we can in example learn how to upload 3d objects to our scene from our local storage

  • @guillaumedurant7647
    @guillaumedurant7647 11 місяців тому +3

    Hi. Thank you for your explanations. This is exactly what I was looking for. I'm a newbie in Javascript. I'm still able to understand all you said. I guess I will I to watch your video again and again and again....

  • @deepak8586
    @deepak8586 Рік тому +2

    wee need more threejs stuff this is so cool!! short and on point!!

  • @arisweedler4703
    @arisweedler4703 2 місяці тому

    1:22 one of those CSS rules was not like the others. One was for aesthetics, and the other was for complete painting onto the screen control

  • @ucato6278
    @ucato6278 6 місяців тому +1

    I think this video is a great starting point for whoever wanna try to mess with models in three.js (such as myself), great job my guy!!!

  • @mayurjakate2161
    @mayurjakate2161 Рік тому +3

    Thanks, Gabriel, This is the best and simple video to learn three.js

  • @AirborneInsightsUK
    @AirborneInsightsUK 2 місяці тому +1

    Great video, clearly explained and it works. Thank you.
    Using Visual Studio Code on my PC I needed to install the Live Server extension to display the html webpage running the Java script. Adobe Dreamweaver running on my Mac seems to have live server functionality built in.

  • @Eyuelfrew
    @Eyuelfrew 10 місяців тому

    cooooooollllll, we need more of three.js , keep it up

  • @MPG7555
    @MPG7555 5 місяців тому

    clean and sharp! love this!

  • @jaqsentanner5386
    @jaqsentanner5386 Рік тому

    Great and quick breakdown! Thank you.

  • @valentimgarcia6179
    @valentimgarcia6179 Рік тому +1

    Amazing tutorial, keep up with these!

  • @Psycandy
    @Psycandy 11 місяців тому

    right at the end you type some weird sort of arrow. That symbol does not exist in ASCII so it would be useful to know how you managed to get half the special characters you magically paste in, leaving us to type it up wrong, and it won't work. I guess you aren't supposed to type it out, just copy paste from somewhere, which will remain a secret. Super.

    • @bzsteachings511
      @bzsteachings511 11 місяців тому +1

      If I understood what you meant, what you are talking about are legatured, those are basically more characters combined for a different look.
      You can enable them in VS in the options, for the arrow is just = and > combined that look like an arrow

  • @sysadmin9396
    @sysadmin9396 Рік тому +1

    I think I finally found a way to give my ai home assistant a “face” . Thank you

  • @muhammadyameen4998
    @muhammadyameen4998 9 місяців тому

    thanks for it. got lead for a jump start. thanks bud

  • @mathom633
    @mathom633 7 місяців тому +12

    somehow it doesnt work for me, i literally downloaded everything on github but the eye still doesnt show up, its just a black screen with the header

    • @johnmichaeldacara5636
      @johnmichaeldacara5636 5 місяців тому

      that means the compatibility related, bro.

    • @adityapatki9494
      @adityapatki9494 2 місяці тому

      Bro it's showing the same for me

    • @anonoanon1198
      @anonoanon1198 2 місяці тому

      ​@@adityapatki9494 are you sure you're pointing to the right file path?

  • @toobakhan-t8d
    @toobakhan-t8d 10 місяців тому

    Amazing tutorial, thanksss

  • @KwameGyanko
    @KwameGyanko Рік тому

    I dont understand it now but in a few months it will all make sense 😅. thank you

  • @猫大花
    @猫大花 Рік тому

    Thank you! It’s very excellent!

  • @filipemecenas
    @filipemecenas Рік тому

    Thats super cool !!!

  • @HarshGupta-n1z
    @HarshGupta-n1z Рік тому +1

    awesome content bro

  • @summerjp1997
    @summerjp1997 Рік тому

    Amazing! thank you so much

  • @kevinland534
    @kevinland534 10 місяців тому

    Very awesome job with this video! The only thing is that I can only view the eyeball model. Do I need to create another webpage and change the code so that I can view the dinohead?

    • @GabrielMolterIO
      @GabrielMolterIO  9 місяців тому +1

      You should be able to switch to the dino by changing line 24:
      let objToRender = 'eye';
      becomes
      let objToRender = 'dino';

    • @kevinland534
      @kevinland534 9 місяців тому

      Excellent! Thank you very much!

  • @tbrogoit02
    @tbrogoit02 Рік тому +2

    I probably wont get an answer but I was wondering what you'd do if you had a scene made in Blender and wanted one specific object within that scene react to mouse movement? To be specific, I want to make a campfire with sparks coming out, but want the sparks to interact with the mouse if it hovers over them and the fire interact differently if the mouse goes over it.

    • @GabrielMolterIO
      @GabrielMolterIO  Рік тому

      I don't know how complex your campfire is, but my best guess would be to have two separate 3D models on the same Three.JS scene (one for the environment and one for the campfire) and I'd have the mouse hover emit some particles or something like that.

  • @MONIKAS-r8d
    @MONIKAS-r8d Рік тому

    Thanks for this video. It would be very helpful if you do this for 3D House model

    • @GabrielMolterIO
      @GabrielMolterIO  Рік тому

      No matter what's the model, the code should work as long as it's exported in glTF

  • @ivanovichCetys
    @ivanovichCetys 6 місяців тому

    Thank u, amazing tutorial bro, however, how can object only limit like a canva and not all the screen?

    • @GabrielMolterIO
      @GabrielMolterIO  6 місяців тому

      I mean, you can make the Canva take the whole viewport size with CSS, doesn’t that work?

  • @wizart2100
    @wizart2100 7 днів тому

    i model high poly cars with high attention to detail, i would love to put my car in the middle with the wireframe so people can see the topo and can move in 360 degree around it. is that possible ? can it be high poly ? cause i also do engine bay which take my car vertices from around 2 million to nearly 20 million

  • @mohameddarwesh9305
    @mohameddarwesh9305 Рік тому

    Thanks, Keep going

  • @SaGaR-is1jg
    @SaGaR-is1jg 5 місяців тому

    thanks for the video

  • @miiukatt4656
    @miiukatt4656 9 місяців тому

    Hello!
    Thank you very much for this, I've been watching for a tutorial for days and I wasn't able to find it until now!
    I have a problem and it's that I can see the preview of the webside with the extension 'Live Preview', but when I run it on browser the 3Dmodel doesn't appear. Could someone help me with that, please? 🙏

    • @GabrielMolterIO
      @GabrielMolterIO  9 місяців тому

      Hey, that's probably related to the import path of the model file. It should work if you add ./ before "models/" on the file path.
      If I remember well, I've given a slightly more detailed explanation in a previous comment here some days ago.

  • @york2301
    @york2301 Рік тому

    Good job!

  • @cauefernandes5706
    @cauefernandes5706 8 місяців тому

    Muito top mano, ajudou dms brasil no topo sempre

  • @aryanmauryamr.perfect1426
    @aryanmauryamr.perfect1426 2 місяці тому

    He is real developer

  • @hakkesan
    @hakkesan Рік тому

    thank you!

  • @imasunflowerlilfunny3353
    @imasunflowerlilfunny3353 8 місяців тому +1

    if my project is in react js , how do i add this in my homepage?

    • @GabrielMolterIO
      @GabrielMolterIO  8 місяців тому

      For React projects I'd use @react-three/fiber and maybe "useGLTF" from @react-three/drei to load the GLTF model. I might make a video on that in the near future.

  • @chamcamtaco6014
    @chamcamtaco6014 11 місяців тому +2

    Sorry, I tried to open your .html file with edge and crhome but the modeling doesn't work and the same thing happens with my files, I don't know if I use a program for local host or not

    • @GabrielMolterIO
      @GabrielMolterIO  11 місяців тому +5

      Hey, I missed that on the video, but I believe the issue you're having is related to how the model file path on the code is relative to the root of the project, but if you just open the .html file, without using some kind of localhost server, it will look for the root of your computer's file system, which won't work...
      Try running it with something like the "Live Server" extension for VSCode.

    • @msg-1995
      @msg-1995 7 місяців тому +1

      ​@@GabrielMolterIOok so we have to run it with node or python to create a http socket or else we can make a flask or react app of it ??

  • @IrvineMesa
    @IrvineMesa Рік тому

    hi where did you get the background music

    • @GabrielMolterIO
      @GabrielMolterIO  Рік тому

      I believe that one is from UA-cam's free library, if I remember correctly

  • @eehm
    @eehm Рік тому

    Thank you

  • @TJKeets
    @TJKeets 3 місяці тому +1

    I have copied the code straight from github but all I get is a black screen with 'A simple three.js app' at the top :(

    • @GabrielMolterIO
      @GabrielMolterIO  2 місяці тому

      If you're using VS Code, try installing the Live Server extension. It's probable that your computer isn't serving the 3D model file in the path the code is looking for.

  • @rolandmaroun2233
    @rolandmaroun2233 7 місяців тому

    video is so cool but the final index.html file in your repository didn't work once launched on google chrome from my side any idea why?

    • @GabrielMolterIO
      @GabrielMolterIO  7 місяців тому

      You might either need to change the path of the 3d models or run the index.html file using some king of server software, like VSCode's Live Server Extension

  • @FLAFRefuelled
    @FLAFRefuelled 3 місяці тому

    what does the scene.bin file do? replacing the scene.gtlf file doesnt just replace the model, so i'm assuming that's related? what does it do and how do i make/get one?
    thanks in advance.

    • @GabrielMolterIO
      @GabrielMolterIO  2 місяці тому

      As far as I understand it, the scene.bin file stores the data that's too big to fit the scene.gltf, but is still needed, in in binary format. Both files must match for the model to work properly. To make these files, export from a 3D software in glTF format. To get them, you can download from plenty of sites, including the one I showed in the video (just make sure to download in glTF format)

  • @toobakhan-t8d
    @toobakhan-t8d 10 місяців тому

    perfect

  • @benxfpg
    @benxfpg Рік тому

    Hi! Im curious how to get this working on my wordpress site😁

    • @GabrielMolterIO
      @GabrielMolterIO  Рік тому

      I'm fairly certain that if you just upload the models to wp-content/uploads, update the path to the file on the code and then place it all inside an HTML block, it should work. There's probably better ways, like using a custom page template file, etc...
      I'm going to be testing this in the future and I might make a video about it, as I've gotten that same question a few times now.

  • @carlo6044
    @carlo6044 2 місяці тому

    Hi for some reason its only showing the eye model, I tried changing the 'Object to render' value to dino but it doesn’t work. Please help

    • @carlo6044
      @carlo6044 2 місяці тому

      Nevermind I got working, Great Video! Thanks!

  • @mathom633
    @mathom633 7 місяців тому +1

    somehow it doesnt work, i downloaded everything from guithub but it only renders a black screen with the header

    • @GabrielMolterIO
      @GabrielMolterIO  6 місяців тому +1

      Yeah, that’s probably an issue with the file pathname, I wrongly assumed everyone would be running this in a server-like environment, with the project folder at the root. I’m pretty sure I’ve given detailed instructions on how to solve it in another comment here, but you basically have to change the 3d model file path and it will work

  • @honeynet
    @honeynet 8 місяців тому

    May I know what's the purpose of "Dino"? The example unable to work properly without this "Dino" thing. Thanks.

    • @GabrielMolterIO
      @GabrielMolterIO  7 місяців тому

      It's the selector I'm using to choose which file to render, either "dino" or "eye". You may very well just hardcode that on a real project

  • @АнастасіяМендела
    @АнастасіяМендела 11 місяців тому

    Hello! Could you please tell me what format of the 3D model is needed to upload it to the site?

    • @GabrielMolterIO
      @GabrielMolterIO  11 місяців тому

      This video uses GLtf format, but you can use a bunch of others as well, just take a look at the documentation on loaders.

  • @drdistic
    @drdistic 9 місяців тому

    Can I create scroll trigger animations for this 3d model?? Please answer

    • @GabrielMolterIO
      @GabrielMolterIO  9 місяців тому

      Yeah, just set your scroll event listener, save the scroll position into a variable and use that variable on the animation loop to make whatever animation you want

  • @dhruvsehgal1198
    @dhruvsehgal1198 8 місяців тому

    Is it possible if i made a customization box changing color and rendering text. will it reflect on model also with changing color and text???

    • @GabrielMolterIO
      @GabrielMolterIO  8 місяців тому

      Yeah, I remember seeing something similar to that on the THREE.JS documentation, maybe take a look at the examples there and you can find a path to follow

  • @tigreonice2339
    @tigreonice2339 Рік тому

    What do you prefer? This, 3js, or spline library?

    • @GabrielMolterIO
      @GabrielMolterIO  Рік тому +1

      I haven't yet tried Spline... seems really cool tho!

  • @lovanshgaur3406
    @lovanshgaur3406 4 місяці тому

    if i download other models, they are not shown. though the dino and eye are working

    • @GabrielMolterIO
      @GabrielMolterIO  3 місяці тому

      Make sure the model file's extension and path are correct, then if that's still not working, try playing with the camera's X, Y and Z values, as the model might be somewhere else in the scene but not directly in front of the camera.

  • @linusesh
    @linusesh Рік тому

    Do i have to install anything only my computer (Mac) to be able to run it locally via VS Code and debugging in Chrome?

    • @GabrielMolterIO
      @GabrielMolterIO  Рік тому +1

      Not really, just dragging the file to Chrome should open it without issues. I use a VSCode Plugin called "Live Server", which makes it a bit faster.

  • @ftmullah
    @ftmullah 11 місяців тому

    hey, how do you go about obj files? please help

    • @GabrielMolterIO
      @GabrielMolterIO  11 місяців тому

      You’d have to replace the glTF loader with the OBJ one, just take a look at the ThreeJS docs: threejs.org/docs/#examples/en/loaders/OBJLoader

  • @ВладВ-ш7ы
    @ВладВ-ш7ы Рік тому

    Thank you so much for this tutorial. I have a problem: my 3D model is so small and it is located so far from my current camera position, so i am confused. I repeated all code, which you have done, please, help me sir😇

    • @GabrielMolterIO
      @GabrielMolterIO  Рік тому

      Sounds like you should play around with the camera.position.z setting a bit. The values I used on the video worked for the models I used, but you'll have to tweak them to make them work with your models.

  • @yashodeeprajput9645
    @yashodeeprajput9645 2 місяці тому

    How do i add more lights my screen is just black

    • @GabrielMolterIO
      @GabrielMolterIO  Місяць тому

      If you cloned the repo and the screen is black, it isn't because of lights. Most probably you need to either fix the file path or run it at the root of a server.

  • @hitheshsuvarna2198
    @hitheshsuvarna2198 8 місяців тому

    ive downloaded other models from sketchfab and included in project directory but when i link them and load they are not coming in the website what may be the reason, i think all model must work, its same format as u mentioned

    • @GabrielMolterIO
      @GabrielMolterIO  8 місяців тому +1

      They should all work, but the settings for each model can be wildly different. So make sure you play around with light sources, camera positions, object materials, etc. Once you get something to appear on the screen you can start tweaking the values and hopefully you'll be able to adjust it the way you want it.

    • @hitheshsuvarna2198
      @hitheshsuvarna2198 8 місяців тому +1

      @@GabrielMolterIO yea man understood it thank you for the info

  • @crepybozz6011
    @crepybozz6011 Рік тому +2

    how do you run it\

    • @GabrielMolterIO
      @GabrielMolterIO  Рік тому +1

      You can use a plugin on your code editor. I use “Live Server” on my VSCode.
      Or you can simply drag the html file to your browser.

  • @alex.29899
    @alex.29899 7 місяців тому

    Which font style do you use in your Vs code ?

    • @GabrielMolterIO
      @GabrielMolterIO  7 місяців тому

      I use Fira Code with ligatures activated

  • @AhmedObeid-AST
    @AhmedObeid-AST 2 місяці тому

    It doesn't show me anything
    what could be the problem!!

    • @GabrielMolterIO
      @GabrielMolterIO  2 місяці тому +1

      If you're using VS Code, try installing the Live Server extension. It's probable that your computer isn't serving the 3D model file in the path the code is looking for.

  • @tunahanergul9945
    @tunahanergul9945 10 місяців тому

    hey um how can I add a background image, in my site I can change colors only

    • @GabrielMolterIO
      @GabrielMolterIO  10 місяців тому

      If the background doesn't interact with the model you can just add it with CSS in element you want, like:
      body { background-image: url(path_to_your_img) }

    • @tunahanergul9945
      @tunahanergul9945 10 місяців тому

      @@GabrielMolterIO it isn't working I don't know why, in a few forums they said you have to add new scene and camera

  • @a5ac8m
    @a5ac8m 11 місяців тому

    I have downloaded everything and copied the exact folder names but it just shows a black screen with the title

    • @GabrielMolterIO
      @GabrielMolterIO  11 місяців тому

      I've heard some people are having the same issue. I believe it's related to how the model file path on the code is relative to the root of the project, but if you just open it without using some kind of localhost server, it will look for the root of your computer's file system, which won't work...
      Try running it with something like the "Live Server" extension for VSCode.

    • @12alfredjoedevasia59
      @12alfredjoedevasia59 9 місяців тому

      i used live server extension but still not working
      @@GabrielMolterIO

  • @breakingtheinternet9622
    @breakingtheinternet9622 Рік тому +2

    I clone your project but it only give me the text

    • @GabrielMolterIO
      @GabrielMolterIO  Рік тому +1

      Not entirely sure what you mean here... The project on GH has all the code AND the 3D models, so it's pretty much ready to run

    • @Ally-uj3di
      @Ally-uj3di Рік тому

      I sadly have the same problem. I cloned your GH Repository, but when I open the index.html file, I only see a black screen with the "A Simple Three.Js"-header, but no 3D Object in sight. I have tried it with "Live Server" and with just dragging the html file to my browser. Both don't work. What did I do wrong? @@GabrielMolterIO

  • @iqrahanif7568
    @iqrahanif7568 Рік тому

    When i use my models in your project they did not show on website

    • @GabrielMolterIO
      @GabrielMolterIO  Рік тому

      I'd start by checking if there are any errors on the console. Also, is the model exported in the correct format? I'd also double check the camera position, it might have to be very different from what I'm using on the video, depending on the model you're using.

  • @vtminhlien8840
    @vtminhlien8840 Рік тому

    Can't workwith STEP file ?

    • @GabrielMolterIO
      @GabrielMolterIO  Рік тому

      Not as far as I know, I'd recommend you read this issue on GitHub: /mrdoob/three.js/issues/7125

  • @ahmadshoukat-c8y
    @ahmadshoukat-c8y 10 місяців тому

    when i add the model its not perfectly centred. i even tried setting position and using different models but got same problem. when i add model its not on origin , its at +ive y-axis.
    anyone know about this problem ?

    • @GabrielMolterIO
      @GabrielMolterIO  10 місяців тому +1

      You know when we set camera.position.z on the video? Did you try changing the positions for camera.position.x and camera.position.y as well? I think that might work for you!

    • @ahmadshoukat-c8y
      @ahmadshoukat-c8y 10 місяців тому +1

      @@GabrielMolterIO yes i know , i had to set values of camera and of position in thousands. another way was to scale down my model. i was wondering if this happens every time for everyone. it would have been great if imported model were just originate from position 0,0,0. (they actually are but the appear at some other position away from origin 🥲).

    • @GabrielMolterIO
      @GabrielMolterIO  10 місяців тому

      @@ahmadshoukat-c8y I don’t actually know the reason for that, but in my experience it was rare to find a model that was nicely centralized at 0,0,0 by default. 🤷🏻‍♂️

    • @ahmadshoukat-c8y
      @ahmadshoukat-c8y 10 місяців тому +1

      @@GabrielMolterIO true , it means its the same case everyone. but there is too much hit and trail in threeJs 😮‍💨 beside knowing dimensions

  • @luismigueltierra4022
    @luismigueltierra4022 5 місяців тому

    Can this be done to a Shopify app?

    • @GabrielMolterIO
      @GabrielMolterIO  3 місяці тому

      Yep, this should work in any type of website!
      Thought, if you're using Shopify's Hydrogen (instead of Liquid), you should probably use the React Three Fiber lib instead, but the underlying logic will still be the same.

  • @Rancha51
    @Rancha51 10 місяців тому

    how are running the project ?

    • @GabrielMolterIO
      @GabrielMolterIO  10 місяців тому

      I use a little VSCode Extension called "Live Server", which I highly recommend.
      You could also simply open the index file with a browser. Keep in mind that, as it is, the code loads the 3D models using paths relative to the root, so to run it without starting a local web-server, you'd have to add a "./" before the file path, to make it relative to the current folder.
      `models/${objToRender}/scene.gltf`
      would have to be
      `./models/${objToRender}/scene.gltf`
      Again, if you use the extension that change isn't needed.

    • @angelinepoissonneau
      @angelinepoissonneau 8 місяців тому

      @@GabrielMolterIO Hi, I have the same problem, I changed "loader.load(
      `./models/${objToRender}/scene.gltf`," but I still get a black screen, when I inspect the page in Chrome, it shows the container3D div has a height of 0, but is the same width as the screen

    • @GabrielMolterIO
      @GabrielMolterIO  8 місяців тому

      @@angelinepoissonneau do you get an error on the console or something?

  • @codywong4052
    @codywong4052 9 місяців тому

    I can't get it to work.

    • @GabrielMolterIO
      @GabrielMolterIO  8 місяців тому

      Do you get an error message on the console or something like that?

  • @bobbysmurf9915
    @bobbysmurf9915 Рік тому +2

    Very specific tutorial that doesn't explain anything and only works with the exact models you use. Disliked.

    • @GabrielMolterIO
      @GabrielMolterIO  Рік тому +1

      There’s plenty of in-depth tutorials on Three.JS available. I made this one for people who are already familiar with JS, and wouldn’t mind exploring a bit on their own.
      As for it working only with the models I’ve used, that’s wrong. It should work with any model given that you change the magic numbers throughout the code to adapt to your model. Play a bit with these numbers and I’m sure you’ll be able to run it successfully.

    • @franzruggiero8991
      @franzruggiero8991 Рік тому

      this tutorial was great it's just not for beginners or people who don't know how to use Google, obviously different objects might require a different setup than his

    • @bobbysmurf9915
      @bobbysmurf9915 Рік тому

      @@franzruggiero8991 I figured it out a while ago, with an actual good tutorial.

  • @sahilbhosale4945
    @sahilbhosale4945 2 місяці тому

    i didnt get the pathing of the file, when you have to load the file.