Jump to content
  • Advertisement

Search the Community

Showing results for tags '3D'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

  • Audio
    • Music and Sound FX
  • Business
    • Business and Law
    • Career Development
    • Production and Management
  • Game Design
    • Game Design and Theory
    • Writing for Games
    • UX for Games
  • Industry
    • Interviews
    • Event Coverage
  • Programming
    • Artificial Intelligence
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Engines and Middleware
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
  • Archive

Categories

  • Audio
  • Visual Arts
  • Programming
  • Writing

Categories

  • Game Dev Loadout
  • Game Dev Unchained

Categories

  • Game Developers Conference
    • GDC 2017
    • GDC 2018
  • Power-Up Digital Games Conference
    • PDGC I: Words of Wisdom
    • PDGC II: The Devs Strike Back
    • PDGC III: Syntax Error

Forums

  • Audio
    • Music and Sound FX
  • Business
    • Games Career Development
    • Production and Management
    • Games Business and Law
  • Game Design
    • Game Design and Theory
    • Writing for Games
  • Programming
    • Artificial Intelligence
    • Engines and Middleware
    • General and Gameplay Programming
    • Graphics and GPU Programming
    • Math and Physics
    • Networking and Multiplayer
  • Visual Arts
    • 2D and 3D Art
    • Critique and Feedback
  • Community
    • GameDev Challenges
    • GDNet+ Member Forum
    • GDNet Lounge
    • GDNet Comments, Suggestions, and Ideas
    • Coding Horrors
    • Your Announcements
    • Hobby Project Classifieds
    • Indie Showcase
    • Article Writing
  • Affiliates
    • NeHe Productions
    • AngelCode
  • Topical
    • Virtual and Augmented Reality
    • News
  • Workshops
    • C# Workshop
    • CPP Workshop
    • Freehand Drawing Workshop
    • Hands-On Interactive Game Development
    • SICP Workshop
    • XNA 4.0 Workshop
  • Archive
    • Topical
    • Affiliates
    • Contests
    • Technical
  • GameDev Challenges's Topics
  • For Beginners's Forum

Calendars

  • Community Calendar
  • Games Industry Events
  • Game Jams
  • GameDev Challenges's Schedule

Blogs

There are no results to display.

There are no results to display.

Product Groups

  • Advertisements
  • GameDev Gear

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Website


Role


Twitter


Github


Twitch


Steam

Found 1000 results

  1. jb-dev

    Spa V3 w/ plants

    From the album: Vaporwave Roguelite

    This is a nicer version of the spa room, plants included!
  2. Last week, there was a lot of thinking going on... There's still is least one new room plus many different refactoring. The Spa Firstly, there's a new room: the spa. This is a relaxing and zen room filled with classical Vaporwave aesthetics. I've based it on really generic Vaporwave images around the internet. The gist is that the player can cure its status effect by interacting with either massage table in the back. You may or may not have seen the fountain in the middle of the room. Its water is purely refractive with a solid, almost emissive colour when perpendicularly facing its surface (like some kind of Fresnel). This shader is part of Unity's Standard Asset, so it wasn't a hassle to get it up and running. The water is also being used in the restroom's toilet. There might be other places where it might pop up in future rooms. Minor Changes I've modelled and imported a generic spherical light that makes lighting a tad more tangible and credible. Most lights are now coloured using blackbody colour temperatures, adding a little bit more reality to most rooms. Changed the palette texture. Colours are now more distinct from each other and more contrasting for at least the default palette. This is due to some feedback saying that the palette was too much pink... Changed how most solid colours meshes are being rendered so that they rely more on the palette texture. This means that changing the current sub-pallette or even the texture itself will dynamically change the colour of those meshes as well. Made the palette initializing run within the Unity Editor. Now there's no need to run the game only to look how models are shown. This really speeds up room designs and model previews, mainly because I previously needed to compile the game and regenerate the levels until the wanted room was generated. Refactored the RNG. Now each level has its own isolated RNG state. This means that actions taken in one level won't influence the next one anymore. This also means that a given seed at a given chance (or luck if you fancy) stat will always produce the same level with the same loot. There's still some tweaking to do, but overall the isolated RNG system is in place. Many bugs were corrected, particularly with shaders. Next Week Most significant rooms are now in the game. There are still some minor rooms left, but these can wait: those might not even make it into the game so my energy could be better used on more critical stuff. Right now, normal rooms are in dire need of polish. Like in The Binding of Isaac, there will be different types of regular rooms. Each room would have different types of decoration in them. For example, some might have loads of rocks while others won't. There are currently only two placeholders kind of regular room... I do not know how many kinds of disposition there'll be: all of this needs research, sketches and design... There's a lot of work ahead. The good news is that heavy modelling is momentarily stopped. The following week will be fundamentally a coding one...
  3. jbadams

    Free art assets

    The older version of this topic is getting quite dated, with some broken links and notable omissions, so after 8 years it's high time for an update. This is a list of free graphics for games but aims to avoid sprites ripped from existing games in favour of ones that may be legally used in your work. Please feel free to submit your own suggestions, but note that any off-topic posts and all spam may be removed from this topic. Be sure to check the licensing terms before using any of the linked graphics. Free Airplane Sprite Pack A free .zip package right here on GameDev.net containing various aircraft from different (mostly side or top down) angles. Includes fighter jets, bombers and cargo planes. Provided by our very own (but recently inactive) @Prinz Eugn (Mark Simpson). Free for any use with attribution to the author. Kenney Assets A huge collection of freely available assets (both 2d and 3d) for many different styles of games, available under CC0 1.0 Universal licensing terms. In addition to the free assets, Kenney's work is supported by the sale of cheaply available asset packs which you'll find linked at the top of the page, and the fantastic Asset Forge which allows the easy creation of customised game assets. SpriteLib GPL A free .zip package of 2d games sprites by Ari Feldman, now available under a Common Public License Version 1.0. Unfortunately, the original website is no longer online, the source website is back online HERE, but the sprite package is attached to this post for you to download: spritelib_gpl.zip Contains sprites for a platform game, Pong/Breakout/Arkanoid style games, overhead shooter in the style of 1943, and a maze combat game in the style of Tank Force. Lost Garden Freely provided graphics from Daniel Cook of Lost Garden & Spry Fox, under licensing terms explained on this page. Danc's Miraculously Flexible Game Prototyping Tiles Danc's Miraculously Flexible Game Prototyping Graphics for Small Worlds 250 free hand-drawn textures Tyrian ships and tiles Tiles for Zelda-like RPG Complete set of 8-bit Sinistar clone graphics Unreleased RTS Postmortem: 'Hard Vacuum' (graphics near end of post) In addition to the above, Daniel also has a couple of 'Game Prototyping Challenges' where he provides the basic outline of a game design and challenges people to implement and iterate on the design to hopefully create a fun game. A couple of these challenges come with freely provided graphics, although in this case the assets are intended for use if undertaking the challenge (a fantastic learning exercise!) in question rather than for general use: Prototyping Challenge: Play With Your Peas Prototyping Challenge: Fishing Girl Glitch - Public Domain Art (and code) All assets from a defunct web-based MMO game, made freely available under CC0 1.0 Universal licensing terms. Get it HERE. Most of the graphics are available in .fla and .swf formats. Quaternius Quaternius offers a large range of basic low-poly models with CC0 licensing. You can also support his efforts by purchasing all of his sets in a single file for $1. OpenGameArt.org OpenGameArt have a huge collection of different art, constantly added to by new and existing contributors. Quality and style vary, but there is some really good material available if you're willing to spend some time looking. Note that licensing terms vary, so be sure to check each item's license before use. Game-Icons.net At the time of writing, Game-Icons.net offers 3044 free icons in SVG and PNG formats with CC BY 3.0 licensing (which requires attribution). The built in editor on the site will allow you to alter the icon size and apply some simple properties (such as background type and colour). AI War 2.0 graphics library Graphics from the space RTS game AI War: Fleet Command. Free for use by indie developers. Get it HERE. Reiner's Tilesets 2d and 3d graphics (use the menu at the top of the site to view categories) available under these licensing terms. MakeHuman MakeHuman is an open source (AGPL licenced) tool for creating 3d characters. Output characters can be used under a permissive CC0 license under certain conditions. GameDev.Market There are some free assets available via the GameDev Marketplace (our very own asset store!). Looking to hire an artist for custom work? Check out our Contractors section, or advertise your project in our Game Jobs board (for paid commercial projects) or Hobby Classifieds forum (for free hobbyist projects). Looking to purchase pre-made assets? Try the GameDev Marketplace, or other asset stores such as GameDev Market (not affiliated with us!), the Unity Asset Store, the Unreal Marketplace, or others.
  4. Ordnas

    Rocky Knight

    Rocky Knight https://ordnas.itch.io/rocky-knight Rocky Knight is a Beat 'em up prototype game developed by Alessandro "Ordnas" Capriolo. Featuring the beautiful 3D fantasy assets from Synty Studios, and the music scored by Aaron Krogh, Rocky Knight builds upon a classic gameplay with a fresh story and dangerous boss fights inspired by the arcade-style from the 90' like Double Dragon, Knights of the Round and Final Fight. If you liked this game follow me on Twitter: https://twitter.com/CaprioloOrdnas
  5. Hi, I have C++ Vulkan based project using Qt framework. QVulkanInstance and QVulkanWindow does lot of things for me like validation etc. but I can't figure out due Vulkan low level API how to troubleshoot Vulkan errors. I am trying to render terrain using tessellation shaders. I am learning from SaschaWillems tutorial for tessellation rendering. I think I am setting some value for rendering pass wrong in MapTile.cpp but unable to find which cause I dont know how to troubleshoot it. Whats the problem? App freezes on second end draw call Why? QVulkanWindow: Device lost Validation layers debug qt.vulkan: Vulkan init (vulkan-1.dll) qt.vulkan: Supported Vulkan instance layers: QVector(QVulkanLayer("VK_LAYER_NV_optimus" 1 1.1.84 "NVIDIA Optimus layer"), QVulkanLayer("VK_LAYER_RENDERDOC_Capture" 0 1.0.0 "Debugging capture layer for RenderDoc"), QVulkanLayer("VK_LAYER_VALVE_steam_overlay" 1 1.1.73 "Steam Overlay Layer"), QVulkanLayer("VK_LAYER_LUNARG_standard_validation" 1 1.0.82 "LunarG Standard Validation Layer")) qt.vulkan: Supported Vulkan instance extensions: QVector(QVulkanExtension("VK_KHR_device_group_creation" 1), QVulkanExtension("VK_KHR_external_fence_capabilities" 1), QVulkanExtension("VK_KHR_external_memory_capabilities" 1), QVulkanExtension("VK_KHR_external_semaphore_capabilities" 1), QVulkanExtension("VK_KHR_get_physical_device_properties2" 1), QVulkanExtension("VK_KHR_get_surface_capabilities2" 1), QVulkanExtension("VK_KHR_surface" 25), QVulkanExtension("VK_KHR_win32_surface" 6), QVulkanExtension("VK_EXT_debug_report" 9), QVulkanExtension("VK_EXT_swapchain_colorspace" 3), QVulkanExtension("VK_NV_external_memory_capabilities" 1), QVulkanExtension("VK_EXT_debug_utils" 1)) qt.vulkan: Enabling Vulkan instance layers: ("VK_LAYER_LUNARG_standard_validation") qt.vulkan: Enabling Vulkan instance extensions: ("VK_EXT_debug_report", "VK_KHR_surface", "VK_KHR_win32_surface") qt.vulkan: QVulkanWindow init qt.vulkan: 1 physical devices qt.vulkan: Physical device [0]: name 'GeForce GT 650M' version 416.64.0 qt.vulkan: Using physical device [0] qt.vulkan: queue family 0: flags=0xf count=16 supportsPresent=1 qt.vulkan: queue family 1: flags=0x4 count=1 supportsPresent=0 qt.vulkan: Using queue families: graphics = 0 present = 0 qt.vulkan: Supported device extensions: QVector(QVulkanExtension("VK_KHR_8bit_storage" 1), QVulkanExtension("VK_KHR_16bit_storage" 1), QVulkanExtension("VK_KHR_bind_memory2" 1), QVulkanExtension("VK_KHR_create_renderpass2" 1), QVulkanExtension("VK_KHR_dedicated_allocation" 3), QVulkanExtension("VK_KHR_descriptor_update_template" 1), QVulkanExtension("VK_KHR_device_group" 3), QVulkanExtension("VK_KHR_draw_indirect_count" 1), QVulkanExtension("VK_KHR_driver_properties" 1), QVulkanExtension("VK_KHR_external_fence" 1), QVulkanExtension("VK_KHR_external_fence_win32" 1), QVulkanExtension("VK_KHR_external_memory" 1), QVulkanExtension("VK_KHR_external_memory_win32" 1), QVulkanExtension("VK_KHR_external_semaphore" 1), QVulkanExtension("VK_KHR_external_semaphore_win32" 1), QVulkanExtension("VK_KHR_get_memory_requirements2" 1), QVulkanExtension("VK_KHR_image_format_list" 1), QVulkanExtension("VK_KHR_maintenance1" 2), QVulkanExtension("VK_KHR_maintenance2" 1), QVulkanExtension("VK_KHR_maintenance3" 1), QVulkanExtension("VK_KHR_multiview" 1), QVulkanExtension("VK_KHR_push_descriptor" 2), QVulkanExtension("VK_KHR_relaxed_block_layout" 1), QVulkanExtension("VK_KHR_sampler_mirror_clamp_to_edge" 1), QVulkanExtension("VK_KHR_sampler_ycbcr_conversion" 1), QVulkanExtension("VK_KHR_shader_draw_parameters" 1), QVulkanExtension("VK_KHR_storage_buffer_storage_class" 1), QVulkanExtension("VK_KHR_swapchain" 70), QVulkanExtension("VK_KHR_variable_pointers" 1), QVulkanExtension("VK_KHR_win32_keyed_mutex" 1), QVulkanExtension("VK_EXT_conditional_rendering" 1), QVulkanExtension("VK_EXT_depth_range_unrestricted" 1), QVulkanExtension("VK_EXT_descriptor_indexing" 2), QVulkanExtension("VK_EXT_discard_rectangles" 1), QVulkanExtension("VK_EXT_hdr_metadata" 1), QVulkanExtension("VK_EXT_inline_uniform_block" 1), QVulkanExtension("VK_EXT_shader_subgroup_ballot" 1), QVulkanExtension("VK_EXT_shader_subgroup_vote" 1), QVulkanExtension("VK_EXT_vertex_attribute_divisor" 3), QVulkanExtension("VK_NV_dedicated_allocation" 1), QVulkanExtension("VK_NV_device_diagnostic_checkpoints" 2), QVulkanExtension("VK_NV_external_memory" 1), QVulkanExtension("VK_NV_external_memory_win32" 1), QVulkanExtension("VK_NV_shader_subgroup_partitioned" 1), QVulkanExtension("VK_NV_win32_keyed_mutex" 1), QVulkanExtension("VK_NVX_device_generated_commands" 3), QVulkanExtension("VK_NVX_multiview_per_view_attributes" 1)) qt.vulkan: Enabling device extensions: QVector(VK_KHR_swapchain) qt.vulkan: memtype 0: flags=0x0 qt.vulkan: memtype 1: flags=0x0 qt.vulkan: memtype 2: flags=0x0 qt.vulkan: memtype 3: flags=0x0 qt.vulkan: memtype 4: flags=0x0 qt.vulkan: memtype 5: flags=0x0 qt.vulkan: memtype 6: flags=0x0 qt.vulkan: memtype 7: flags=0x1 qt.vulkan: memtype 8: flags=0x1 qt.vulkan: memtype 9: flags=0x6 qt.vulkan: memtype 10: flags=0xe qt.vulkan: Picked memtype 10 for host visible memory qt.vulkan: Picked memtype 7 for device local memory qt.vulkan: Color format: 44 Depth-stencil format: 129 qt.vulkan: Creating new swap chain of 2 buffers, size 600x370 qt.vulkan: Actual swap chain buffer count: 2 (supportsReadback=1) qt.vulkan: Allocating 1027072 bytes for transient image (memtype 8) qt.vulkan: Creating new swap chain of 2 buffers, size 600x368 qt.vulkan: Releasing swapchain qt.vulkan: Actual swap chain buffer count: 2 (supportsReadback=1) qt.vulkan: Allocating 1027072 bytes for transient image (memtype 8) QVulkanWindow: Device lost qt.vulkan: Releasing all resources due to device lost qt.vulkan: Releasing swapchain I am not so sure if this debug helps somehow :(( I dont want you to debug it for me. I just want to learn how I should debug it and find where problem is located. Could you give me guide please? Source code Source code rendering just few vertices (working) Difference between links are: Moved from Qt math libraries to glm Moved from QImage to gli for Texture class Added tessellation shaders Disabled window sampling Rendering terrain using heightmap and texturearray (Added normals and UV) Thanks
  6. Greedy Goblin

    State Changes

    Games usually (if not always) require some way to manage state changes... and I'm sure most of you (if not all of you) know far more about State Machines than I do. And I'm certain that I could learn a heck of lot from reading up about the subject to build a state machine that works beautifully and makes my code look amazing etc etc. Pfft.. never mind all that... I'm building this game 'off the cuff' as it were, making it up as I go along and following the principle of 'I build what I need when I need it and only insofar that it adequately fulfils the requirements at that time'. I don't try to plan ahead (not in any granular sense anyway), I'm not building a reusable one-size-fits-all game engine, I'm not trying to make the code beautfiul, or win any awards or even make any money from the darn thing. It just needs to perform well enough for what I want it to do. So my immediate requirement is that I have a way to manage the player switching from walking to running to whatever. If I can use it elsewhere for other things then great... and I'll be honest, I do like reusable code so I tend to naturally sway toward that. What I'm trying to avoid is getting myself stuck in a rut, spending weeks/months deliberating over the smallest details because it's got to be 'perfect' and then realising I've still got 99.5% of the game to build! Quick and dirty is OK in my world. I often approach things from a top-down perspective. This boils down to: 'How do I want to instruct the computer to do x, y or z?' So for this particular requirement, how do I want to instruct the game that the player can change from walking to running and running to walking, or walking/running to falling (assuming I make that a player state - which I do), but not from sleeping to running for example? Hell, I don't even know all the states that I want yet, but these are the ones I have a feel for so far: Walking Running Skiiing Driving Falling Drowning Sleeping Eating Introducing 'When' I thought it might be nice to be able to write something like this in my player setup: // Configure valid player state transitions When( this.playerState ).changes().from( PLAYER_STATES.WALKING ).to( PLAYER_STATES.RUNNING ).then( function () { } ); When( this.playerState ).changes().from( PLAYER_STATES.RUNNING ).to( PLAYER_STATES.WALKING ).then( function () { } ); When( this.playerState ).changes().from( PLAYER_STATES.WALKING ).to( PLAYER_STATES.SKIING ).then( function () { } ); When( this.playerState ).changes().from( PLAYER_STATES.SKIING ).to( PLAYER_STATES.WALKING ).then( function () { } ); When( this.playerState ).changes().from( PLAYER_STATES.WALKING, PLAYER_STATES.RUNNING, PLAYER_STATES.SKIING ).to( PLAYER_STATES.FALLING ).then( function () { } ); There's probably a library for something like this out there, but heck, where's the fun in that?! So I create a new 'Stateful' object that represents a state (in this case the playerState) and it's allowed transitions and a 'When' function so I can write the code exactly as above: const Stateful = function () { } Stateful.isStateful = function ( obj ) { return obj.constructor && obj.constructor.name === Stateful.name; } Stateful.areEqual = function ( v1, v2 ) { return v1.equals ? v1.equals( v2 ) : v1 == v2; } Stateful.prototype = { constructor: Stateful, set: function ( v ) { let newState = typeof ( v ) === "function" ? new v() : v; for ( let i = 0; i < this.transitions.length; i++ ) { let transition = this.transitions[i]; if ( transition && typeof ( transition.callback ) === "function" ) { let fromMatch = Stateful.areEqual( transition.vFrom, this ); let toMatch = Stateful.areEqual( transition.vTo, newState ); if ( fromMatch && toMatch ) { // We can only change to the new state if a valid transition exists. this.previousState = Object.assign( Object.create( {} ), this ); Object.assign( this, newState ); transition.callback( this.previousState, this ); } } } }, transitions: Object.create( Object.assign( Array.prototype, { from: function ( vFrom ) { this.vFrom = typeof ( vFrom ) === "function" ? new vFrom() : vFrom; return this; }, to: function ( vTo ) { this.vTo = typeof ( vTo ) === "function" ? new vTo() : vTo; return this; }, remove: function ( fn ) { this.vFrom = this.vFrom === undefined ? { equals: function () { return true; } } : this.vFrom; this.vTo = this.vTo === undefined ? { equals: function () { return true; } } : this.vTo; for ( let i = 0; i < this.length; i++ ) { let transition = this[i]; let fromMatch = Stateful.areEqual( this.vFrom, transition.vFrom ); let toMatch = Stateful.areEqual( this.vTo, transition.vTo ); let fnMatch = fn === undefined ? true : transition.callback == fn; if ( fromMatch && toMatch & fnMatch ) { delete this[i]; } } } } ) ) } function When( statefulObj ) { if ( !Stateful.isStateful( statefulObj ) ) { throw "Argument must be a Stateful object"; } return { changes: function () { return { from: function ( ...vFrom ) { this.vFrom = vFrom; return this; }, to: function ( ...vTo ) { this.vTo = vTo; return this; }, then: function ( fn ) { if ( typeof ( fn ) === "function" ) { this.vFrom = this.vFrom === undefined ? [true] : this.vFrom; this.vTo = this.vTo === undefined ? [true] : this.vTo; for ( let i = 0; i < this.vFrom.length; i++ ) { for ( let j = 0; j < this.vTo.length; j++ ) { statefulObj.transitions.push( { vFrom: typeof ( this.vFrom[i] ) === "function" ? new this.vFrom[i]() : this.vFrom[i], vTo: typeof ( this.vTo[j] ) === "function" ? new this.vTo[j]() : this.vTo[j], callback: fn } ); } } } else { throw "Supplied argument must be a function"; } } }; } } } I drop the aforementioned 'When' statements into my Player setup and remove the old 'If' statements that were previously controlling changes between walking and running and insert the new playerState.set() calls where appropriate. e.g. "run": ( pc, keyup ) => { if ( keyup ) { _this.player.playerState.set( PLAYER_STATES.WALKING ); } else { _this.player.playerState.set( PLAYER_STATES.RUNNING ); } } And it seems to work! (Yes I was actually surprised by that) 😂 TheBerg-StateChanges.mp4 p.s. I've switched to using Bandicam for screen capture as it seems far superior to what I was using previously.
  7. gdarchive

    Reverse-Normal 3d Outline Tutorial

    Duplicate your mesh. Apply flat black material for the outline. Select your duplicated model and reverse its Normal direction. 'Face normals' are the direction a face is pointing/rendering. Next, we turn on backface culling. 'Backfaces' are the sides of faces that are pointing away from the normal direction. Change your move manipulator to move based on normal direction. Then scale the mesh outwards. You can use a shader to do this but you will often get issues at corners where the faces diverge. Be mindful of your poly count since you're basically doubling it. If you're working super low-poly though it's all good! Note: This tutorial was originally published on the author's website, and is reproduced here with kind permission. Check out Brendan's ArtStation and Twitter accounts for portfolio and other tutorials.
  8. Trying to work on creating more stylized assets, first time painting a texture by hand. Let me know what I can improve on, Thanks!
  9. This whitepaper was originally posted on the Unreal Engine Blog bySebastien Miglio at https://unrealengine.com/en-US/blog/create-photoreal-car-windows-in-unreal-engine. The original whitepaper by Min Jie Wu and edited by Robb Surridge is available for download at here. Republished with permission. Automotive glass can be a particularly challenging element for real-time automotive rendering. In the real world, car windows involve a complex interplay of light as it passes through multiple layers of material with different physical properties. These results can be difficult to imitate in a real-time renderer, while achieving an acceptable balance between physical realism and a fast enough frame rate. And to make things even more difficult, the windows of a car naturally attract the viewer’s attention — especially the windshield. Any unrealistic artifacts or reflections can easily destroy the overall effect of an otherwise high-quality rendering. This paper describes an approach to designing windshields in Unreal Engine 4 that delivers photoreal results in real time. See the results of this technique in the award-winning short film, The Human Race: Mesh Structure This technique begins with the way the windshield is modeled. The windshield needs to be made up of four independent meshes or mesh groups. Each of these four meshes needs to be single-sided. The following diagram summarizes the layout of the meshes: Figure 1: Mesh layout There are two outer layers of the windshield, Mesh 1 and Mesh 2, that have their normals pointing outward toward the exterior of the vehicle. These are represented by the red and yellow lines. There are two inner layers, Mesh 3 and Mesh 4, that have their normals pointing inward toward the inside of the vehicle. These are represented by the green and blue lines. This detail view shows how these four meshes are arranged with respect to each other in 3D space: Figure 2: Mesh arrangement in 3D space Mesh 1, the exterior reflective layer, forms the outer skin of the windshield. It will provide the reflections that you see from outside the vehicle. Its normals point outward from the vehicle. Figure 3: Mesh highlighted in orange At a distance of half the windshield’s total thickness, you have Mesh 2, the outer tint layer. When you look at the windshield from the outside, this layer tints your view of the inside of the car according to the color of the glass. Its normals also point outward, in the same direction as Mesh 1. Figure 4: Mesh 2 highlighted in orange Figure 5: Mesh 3 highlighted in orange Back to back with Mesh 2, you have Mesh 3, the inner tint layer. When you look out through the windshield from inside the car, this layer tints your view of the outside surroundings according to the color of the glass. Its normals point inward. Figure 6: Mesh 4 highlighted in orange Finally, at the innermost extent of the windshield, Mesh 4 provides the reflections of the interior of the car that you see when looking out from the inside. Its normals point inward. The following image shows the Static Mesh Actors for these four meshes in the World Outliner in the Unreal Editor: Figure 8: Static Mesh Actors in the World Outliner Below, all four layers are shown in the viewport of the Unreal Editor, in wireframe and lit modes: Figure 9: Four layers in the viewport Material Design This technique requires two different translucent Materials: A reflective Material, which you’ll apply to the exterior and interior surfaces of the windshield. A tint Material, whose only job is to color the things that you see through the glass. Material 1: Reflective The goal of this Material is to handle only the light that gets reflected off the glass. We want this layer of the windshield to be fully transparent when we look at it straight on, but very reflective when we look at it at a grazing angle. To model this in Unreal Engine, we need to start with a translucent Material. When you select your Material’s output node in the Material Editor, set the following values in the Details panel: Set the Blend Mode to Translucent. Set the Lighting Mode to Surface TransparencyVolume. Enable Screen Space Reflections. Figure 10: Details panel in the Material Editor for the reflective Material In the Material’s graph, we set it up as a mirrorlike chrome, but we also tie its opacity to the camera’s viewing angle using the Fresnel node. Make the Base Color white. Set the Metallic and Specular inputs to 1.0. Set the Roughness input to 0.0. Ordinarily, a white, perfectly reflective, and perfectly metallic surface would have the appearance of smooth chrome. However, we also attach the Fresnel node to the Opacity input of the material’s output node. This makes those crisp reflections appear only where the curvature of the glass causes us to see it at a sharp enough angle for the Fresnel function to begin affecting the opacity. Anywhere the viewing angle is close to the normal of the mesh, the glass remains clear. Figure 10: Materials graph Car windshields typically use an athermic glass, which has slightly more reflectance than plain glass. The following image illustrates how the reflectivity of the athermic material changes over different wavelengths of incoming light: Figure 11: Material graph for the reflective Material To simulate this physical property, and make your reflections fit your scene more accurately, you can adjust the values of the Exponent and BaseReflectFraction inputs that you pass to the Fresnel node (called EXP and Intensity respectively in the Material shown above). This gives you control over the strength of the reflections and how they fade over the curvature of the glass. Figure 12: Effect of passing different input values to the Fresnel node Material 2: Tint The goal of this Material is to handle only the light that passes through the glass. We want this layer of the windshield to ignore reflections completely, but to color light that passes through the glass according to the tint of the windshield. To model this in Unreal Engine, we need another translucent Material. When you select your Material’s output node in the Material Editor, set the following values in the Details panel: Set the Blend Mode to Translucent. Set the Lighting Mode to Surface TransparencyVolume. This time, disable Screen Space Reflections. For this Material, we want to avoid all specular and reflective contributions. A simple way to set up the graph for this Material is to use a constant Opacity setting. Make the Base Color the color of the glass. Always use a Specular input of 0.0. This allows light to pass evenly through the glass. Use a Roughness input of 1.0. Use the Opacity channel to control how dark the glass is — that is, how much of the interior of the vehicle you can see from the outside. You can vary this value freely to make the tint effect as strong as you need it to be. Figure 13: Details panel in the Material editor for the tint Material Figure 14: Material graph for the tint Material A slightly more sophisticated setup is to vary the opacity of the glass based on the viewing angle of the camera, as we did in the reflective Material above. In the reflective Material, increasing opacity adds to the strength of the reflections. However, in the tint Material, increasing the opacity simulates the greater absorption of light as it passes through the glass at a sharper angle. The effect is that as your viewing angle increases, less light comes through the glass, and the objects on the other side become harder to see. Figure 15: Material graph for the tint Material, with optional absorption setup You can control the strength of the effect by raising or lowering the value of the absorption parameter shown above. However, this effect works best when you keep it very subtle. If you choose to use absorption, we recommend keeping the value below 0.1. Mesh and Material Assignments Now that you have your Static Mesh Actors and your two Materials ready, you need to assign the correct Materials to the correct Actors: Mesh 1, the exterior reflective layer: Assign the Reflective Material. Mesh 2, the outer tint layer: Assign the Tint Material. Mesh 3, the inner tint layer: Assign the Tint Material. Mesh 4: the interior reflective layer: Assign the Reflective Material. Sorting Translucency The final step in using this technique is to set up the translucency sort priority for the four Static Mesh Actors. When Unreal Engine needs to render multiple translucent objects that overlap in the camera view, it has to draw the objects in back before the objects in front. To figure out the drawing order, it compares the distance from the camera to the origin point of each object’s bounding box. Although this works most of the time, this strategy is not perfect; it can occasionally result in the rear object being drawn in front. To avoid that possibility, we can give the Engine a hint by setting the Translucency Sort Priority option for each of the four Static Mesh Actors in the Level. To find this option, select the Static Mesh Actor for each part of the windshield in either the Viewport or the World Outliner, scroll down in the Details panel to the Rendering section, and expand the advanced properties. Set the Actors to use the following values: Mesh 1: 1 Mesh 2: 0 Mesh 3: 0 Mesh 4: 1 With these settings, the Engine always chooses to render the inner layers of the windshield behind their corresponding outer layers. This retains the correct order for windshield rendering even if the camera flies into or out of the car. Conclusion With four Static Mesh Actors and two Materials set up as described above, you can achieve high-quality, realistic, and performant glass for any automotive rendering project in Unreal. Learn more about Unreal Engine at https://unrealengine.com. [Wayback machine archive]
  10. Hi guys! This is the final trailer for the a Independent game that I and my brother are producing. We are working on it for about 11 months and is already almost 100% complete. Will be available in December on Steam. We are using Blender 3D and Gimp software for production. (More details on the game page on Steam…) About the Game: Dongo Adventure will be a 3D platform style game, where the main character (Dongo) is a mouse that ventures through various scenarios (sewer, house, power grid, lake, etc) and faces several enemies along the way (cockroaches, mosquitoes, frogs, spiders, toxic gases, electric wires, etc). He carries a basket / backpack with cheeses that he uses to throw and defend himself from enemies, as well as being able to push objects that helps him to overcome obstacles. The ultimate goal will be a surprise! The game follows the style of games of classic platforms in 3D version, bringing many fun, surprises and challenges. Dongo Adventure (Steam Game Page): http://store.steampowered.com/app/811450/Dongo_Adventure/ Dongo Adventure (Final Trailer): https://www.youtube.com/watch?v=_fOhuHG07Lo Thanks for following the project!
  11. jb-dev

    Spa V2

    From the album: Vaporwave Roguelite

    A new remodeled spa room. Gone is the grid structure and in with light and simplicity. I've also retouched the default color palette here and there. I do believe that it's more vaporwave that way.
  12. tim3ddd

    animation from XCOM2

    Hello, everyone. I am the beginner in this website. Don't hit me if I make a mistake. Maybe I 've posted this question at the wrong place. Who does know, where were produced animations from XCOM2 I meant program like 3ds Max/Maya/Blender something else??? What was the main program? Or all staff of animation was produced in different software? Also, I would like to know how was produced system of animation, structure. I need a full describing it. Articles or something else. Please tell me if someone knows. I 've found this article but it's not enough. I do not know correct I am or not that have written this post here. Could you give a hint where can I get information about production XCOM2? Thank you in advance.
  13. Plummet Studios

    End of the Line Progress (10/10/2018)

    "End of the Line" development has been at its fastest since the beginning of development, trying to reach its mid-late December Alpha release! Some amazing work has gone into the planning of such a complex story universe with many characters, groups, and locations all coming together to form one story. Expect the hints of the large mysteries involved in the series to start coming out around Halloween! Gameplay-wise, the game has received some major fixes and work on the code since the beginning of the month. Most of the voice actors planned have recorded their necessary lines so we're waiting on some last minute stragglers to finish up! It's very exciting to see all the effort that people are putting in for this game. A new story route is being finalized which will change the end drastically and allow for more choices to affect gameplay. The interactivity between the enemy and environment is being implemented as I type! It has been an amazing week for development and I can't wait to update all of you guys!
  14. What a great week it's been on the development front. Completed the coding and testing of the Master/Login servers, built the standalone client, added in the new chat services we have been working on... The list goes on. But, as with anything great, you take the good with the bad. I messed up the repository by trying to sneak some changes into a file, accidentally deleted the repo copy aaand.. lost a couple days of work but HEY! That's what makes this exciting right? The development community has been amazingly helpful. A resource system is ready to implement, mounts are ready to implement and updated GUI elements are now pending a push to Test. I spent a couple of hours today working with the community group testing an upgrade to the network layer. The results were outstanding. We capped out at 107 unique clients connected to the hosting server (which was a 4CPU 3.3Ghz 8gigRAM ) and there was no errors or hiccups. This was with 100+ people in a tiny area all updating each other with network packets. Was a beautiful sight to see. We then ran a similar test with the old network code and the server ended up melting down at 80 clients in the same general area. We started to see errors at 50 but the whole thing went south for the winter at just over 80. So what does this mean for indie MMO development? Let's put it in perspective, Path of Exile never really has more than 20 people in a town at a time, World of Warcraft rarely has 100 people in close proximity (as in field of view top LoD). Even Elder Scrolls Online rarely sees 100+ player battles in close proximity. Albion online turns into a slideshow with 60+ people in a zone. I for one was very very pleased with the network results. This tells us we can have hundreds of players in an instance and a large portion of them in very close proximity. (Towns and cities anyone?) A massive amount of work has gone into the Unity HLAPI-CE network layer and it is really starting to show. Big props to vis2K and Paul and the rest of the development community for their work on that asset. This can change indie gaming development in such a positive way. Next steps? I am going to implement some of the new systems into the game like mounts, GUI updates and harvesting. These are foundational and allow for testing and need time for debugging. I’ve had the servers up for 4 days now and everything is running awesome. The Database is happy as a clam, the chat servers are good and... once I fix my boo boo with the client (related to the chat system but it desychn'd the entire client build arg!) we'll be in great shape! At this point I am comfortable saying that I anticipate putting "Milestone 1: Servers and core infrastructure" behind us this weekend and move on to feature implementation. The faction system is coming along well. I watched a test of AI fighting each other based on faction checks, very cool. Building an mmo is a massive, just a sec need that to sink in... I mean MASSIVE with a triple bold capital flashing letters M A S SI V E undertaking. Taking a project based approach, defining sprints and milestones and stabilizing your core game systems is, in my opinion, the only way to start. It's not about fireballs and story writing or anything else. Having the coolest fireball spell in the world means nothing if the server desynch's every time you cast it. I am hoping to put the website back up for the game "soon"(tm) but really focused on the nuts and bolts right now and not trying to make the project look all snazzy. I anticipate having some pretty cool screens and our first video footage in the next 2-3 weeks. That being said I am out of town for a week shortly so here is hoping I can get some stuff done. If any of you are experienced Unity3D world builders with a keen sense of poly optimization, LoD and occlusion feel free to drop me a line. World building is tremendously fun but.. I will be the first to admit it's really not my forte. If you want a project to showcase your world building talents and create some wicked in game video of your worlds we should talk. And remember... It's your world now!
  15. Hi guys. we are a small team of dev's looking for other devs to help us on an exciting game. We have several modellers, a level designer, a programmer, audio artist and we are looking for an animator and a good c++ programmer to assist our other programmer. The project is in the unreal engine so knowing blueprints would be prefered. Intially this is unpaid but we are developing this on the intent of releasing it and possibly looking for funding. If you are interested please contact me for further info. I also have our game design doc that I can send you. Thank you
  16. jb-dev

    Looking at a mirror

    From the album: Vaporwave Roguelite

    This is a picture of the player's reflexion onto a mirror. It's all real-time, it's essentially unity's water shader stripped out of anything useless in a true mirror scenario.
  17. Like last week, the room development is still in progress. While there are two new rooms I've also had time to tweak the lighting a bit here and there. New Lights Basically, I've tried to change the lighting of most rooms. First thing first, In order to properly shade the inside rooms I've used invisible shadow casters. At the time, it was the cheapest and quickest way to deal with it when I've started. I did find out that another quick way to do this was with layers and light culling masks. Basically, every game objects that are inside sealed rooms is given a specific layer. That layer, in particular, was made to ignore the global directional light altogether. This means that there were no more need of these shadow casters (except on some opened rooms like the temple; the directional light can actually illuminate the room if the angle is good enough) I've also tried to fix the lighting in most rooms. Although not completely finished, it is getting prettier: The VIRTUAL Clinical Research Center As one of the newest rooms, this one represents a fictional clinical research facility named VIRTUAL Clinical Research. While in this room, the player can actually take part in a dodgy clinical trial involving either a strange cream, pills of unknown content and glowing fluids inside syringes. Each test takes away part of the player's health in exchange for cold hard cash. The ratio of health and cash is actually one to one as of yet. Taking the cream gives 5% of damage, the pills are 10% and the syringes are 25%. This room is quite useful if you're in dire need of cash, just like in real life. (except you don't get hurt as often in real life...) The Restroom This room is quite special. It a rather small room that is actually a normal public restroom, complete with a toilet, a sink, a real-time working mirror, a hand dryer, etc. Although not functional right now, the idea is that the player can flush down one of its piece of equipment down the drain. You can only flush one piece of equipment per restroom because, well, toilets aren't really made to be able to flush down metal armours really... For those who don't know, a piece of equipment acts like a relic but is actually set to a specific equipment slot. You can only have one piece of equipment of a specific slot (for example, the player can have only one pair of gloves because it would be overpowered otherwise). Like most RPG, different pieces of equipment have different types of stats bonuses. Each piece of equipment also has a focus alignment. This means that while the player is wearing those, its focus will progressively be drawn to whatever alignment the equipped piece is. There will also be additional stats bonuses that are applied if the player's focus matches a worn piece of equipment. But anyways, the reason the restroom isn't functional is quite simple: there's no piece of equipment yet. So it's something I'll have to get back to once there's at least one piece of equipment in the game... Next week The game is progressively coming together. Especially when it comes to rooms. There's still a lot of relics and capacities to add. There are also some rooms to add an maybe add different types of enemies and whatnot. I still want to work on rooms as of right now. The thing is that those rooms are really modelling heavy, and I really want to get those out of the way as soon as possible. The rest won't be as heavy as those, but once they're out of the way it will be a pretty big chunk of modelling that will be done. If there's time, maybe I'll work on capacities and relics...
  18. How can I change the skeletal mesh position in a c++ class? because I got this. I´m working in UE4 -> 4.20 I know that the pivot of the mesh is on the bottom, but there must be a way to change the position by code. By the way, my object is a character's derived class.
  19. jb-dev

    Ragdoll removal tests

    From the album: Vaporwave Roguelite

    It's just me trying out ways to remove ragdolls from the world.
  20. jb-dev

    Going to the bathroom

    From the album: Vaporwave Roguelite

    This is a bathroom. The player can use the toilet to flush down one of its unwanted piece of equipment. But because toilet drains aren't build for that in mind, it just get clogged after one use. And yes, the mirror is RT.
  21. Sometime at the dawn of the year, I uninstalled Unity, because of one bug too many. I looked around for alternatives. I wanted it to be 3D and have a WYSIWYG scene editor. I tried Unreal and couldn't get it to work due something going wrong with Visual studio, although I wasn't burning with desire to get into C++ either (I should say that I'm not a professional programmer, nor very experienced one). Then I picked up Godot. It turned out that I just wasn't able to produce a feature that I wanted, but I decided to persevere, modifying my idea... until essentially nothing remained of it. And with a few bugs on top, I departed again. So over the past few days I've gone through, for some definition of "gone through", basically all the engines I could get my hands on for free. There was CRYENGINE whose documentation is a bit of a disgrace. Maybe once it catches up with what seems like a decade of engine development... There was Torque 3D, which seems more of a toy than a real engine. There was Urho 3D which, apart from a terrible interface, only seems to work with the .mdl format... Although, maybe if I can find a Blender plugin for it, I could give it another try. I'm not sure I was fair with it, because at the time I was still optimistic about the other contestants. jMonkeyEngine has been unusably buggy every time I've tried it throughout the years. Wave Engine, after I managed to make it work with Visual Studio on one issue, broke down in building a project. Also, lack of documentation and general internet presence. Although for a while I was very enthusiastic, probably because of its extreme similarity to Unity. ...And is that it? :headscratch: Yeah, everything else I think I only read about. Like, mostly abandoned projects or niche things that I don't fit in (like OpenRTS). Oh, Xenko - buggy and with barely any documentation, as far as I can remember. Oh, actually I don't think I managed to get it to create a project, maybe I should give it another try too. But I'm going to wait for people's opinions first. I'd like to add that the purpose of this post is not to simply bash stuff, but to document my experience in a few words, especially because it seems like Google prefers showing only the best side of these engines. Or maybe I missed something. Maybe with some guidance and perseverance I could get where I want to with one of them. But at this point it seems like I'm "doomed" to go back to Unity. In retrospect, it's actually extremely well-documented and stable by comparison, isn't it?
  22. Greedy Goblin

    Slopey McSlopeface (part 2)

    Having played around with the character movement a bit more I realised I was doing many things wrong. Not that I had ever intended to do things perfectly, but the slope handling just wasn't up to scratch. I had acceleration working, but deceleration didn't due to the way I had built things. So I decided to do a little bit of an overhaul of the player movement system. Nothing too major it turns out but I now have both acceleration and deceleration working very nicely and it gives a much smoother feel to the controls. It's subtle but necessary in my opinion. There is one aspect of slopes that I haven't tackled yet though and that is falling, tumbling or sliding on steep slopes. As I'm not using any fancy physics engine my player character is essentially glued to the terrain like it's on rails. It's not really an issue in so far as jumping is concerned because I don't intend to have any jumping ability in the game. However, I decided that I didn't want to artificially prevent the player from walking off the edge of a cliff so I need some form of falling action (and tumbling if you run down a steep slope too fast - potentially injuring yourself). So what I've done is add forces into my CollisionBody class to represent an accelerant force due to gravity. But to keep my brain from imploding over the quirks of simulating physics (and so as not to have to implement a full-blown physics engine) I decided to half keep the on-rails aspect by doing this: if ( obj.collisionBody.position.y <= targetPos.y ) { obj.collisionBody.position.y = targetPos.y; obj.collisionBody.resetForces(); } else { // Apply gravity obj.collisionBody.applyForce( new Force( DEFAULT_VECTORS.down, _this.gAcceleration ) ); } Where 'targetPos' is the ground position. So if the player is in contact with the ground or moves below it, then they player will just snap back to the precise point on the terrain. It's only when the player goes above the terrain (into the air) that gravity comes into play. This helps keep things nice and simple and gives a nice feel to the movement. Oh and I've also added in some 'head-bobbing' to add a bit of realism to the movement. Overall it gives a really nice result.... and I can now fall off cliffs... You may also notice that the camera rotation is now much smoother too as I now 'slerp' between rotations rather than doing absolute movements, although my screen recording software doesn't do it justice in the video above.
  23. So, in light of comments and various input from people on gamedev.net, I am simply developing a small interactive game and intro into what I hope will be a take off platform for a new brand of sci-fi. The game is simply a attempt to break thru the traditional sci-fi standard. It's a 3D Shooter, with a small amount of tactical command from a ship in a future based on current events and how they play out 150 years from now. I have iClone 7, CC2, 3D XChange Pipeline, Substance B2M, Designer, Painter and Speed Tree. I am a expert at Unreal 4. The idea is to take the idea of Globalism and Alex Jones, the populous movement wins World War III in 2024 opening the door to life extension, eradication of disease, space travel is realized to other galaxies, the space tether is completed and for 150 years man continues but the Globalist Elite return more evil than ever with a new, deadlier discovery. I want to take conspiracy theory elements, stuff people understand today and realize them in a imaginative creative way, in a new Star Trek, Star Wars, Babylon, type Universe. In this small game you will play Terrance Bradley, Captain and former Space Marine (Evolution of Trumps 'Space Force') sent to investigate the disappearance of a Earth Frigate in border space. There you will uncover a evil from 150 years ago, thought defeated, and race against time to survive, and warn Earth command of the immerging threat, returned from before the Transcendent period. This is simply a shooter for the most part. One guy, yes, some nasty creatures, one evil villain and a large vessel. A thriller video intro, great audio score and maybe ten hours of sci-fi shoot'em up action to open the door to a much larger series introduction scientific based technologies, conspiracy theory development, and a future, much larger Universe. Project should take two months at most. Nothing more. I have access to all audio we need. I have all art tools. Would simply like some creative minds familiar with Unreal, maybe another artist to collaborate with and have some fun. Could use a couple actors willing to play Terrance, Renei (Terrance Lover), and a really evil villain, simply voice overs. Voice overs are done with Crazy Talk.
  24. From the album: Vaporwave Roguelite

    These are the products the player can actually test. These will always remove health from the player and will always yield the same amount of cash. Each of these products get progressively more damaging and profitable the more right they are, starting at 5 and ending at 25 of both total damage and profits.
  25. babaliaris

    OpenGL Fragment Position

    Take a Look at my Shaders: Vertex Shader: #version 330 core layout(location = 0) in vec3 aPos; layout(location = 1) in vec3 aNormal; uniform mat4 model; uniform mat4 view; uniform mat4 proj; out vec3 FragPos; out vec3 Normal; void main() { gl_Position = proj * view * model * vec4(aPos, 1.0); FragPos = vec3(model * vec4(aPos, 1.0)); Normal = normalize(mat3(transpose(inverse(model))) * aNormal); } Fragment Shader: #version 330 core out vec4 Color; uniform vec3 viewPos; struct Material { vec3 ambient; vec3 diffuse; vec3 specular; float shininess; }; uniform Material material; struct Light { vec3 position; vec3 ambient; vec3 diffuse; vec3 specular; }; uniform Light light; in vec3 FragPos; in vec3 Normal; void main() { //Calculating the Light Direction From The Fragment Towards the light source. vec3 lightDirection = normalize(light.position - FragPos); //Calculating the camera direction. vec3 camDirection = normalize(viewPos - FragPos); //Calculating the reflection of the light. vec3 reflection = reflect(-lightDirection, Normal); //Calculating the Diffuse Factor. float diff = max( dot(Normal, lightDirection), 0.0f ); //Calculate Specular. float spec = pow( max( dot(reflection, camDirection), 0.0f ), material.shininess); //Create the 3 components. vec3 ambient = material.ambient * light.ambient; vec3 diffuse = (material.diffuse * diff) * light.diffuse; vec3 specular = (material.specular * spec) * light.specular; //Calculate the final fragment color. Color = vec4(ambient + diffuse + specular, 1.0f); } I can't understand how this: FragPos = vec3(model * vec4(aPos, 1.0)); is actually the fragment position. This is just the vertex position transformed to world coordinates. The vertex shader is gonna get called n times where n is the number of vertices, so the above code is also going to get called n times. The actual fragments are a lot more so how can the above code generate all the fragments positions? Also what is a fragments position? Is it the (x,y) you need to move on the screen in order to find that pixel? I don't think so because i read that while you are in the fragment shader the actual pixels on the screen have not been determined yet because the viewport transformation happens at the end of the fragment shader.
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!