Another vote for KiCad--the 3D functionality is acceptable and many of the built-in libraries include models. Before I switched over to KiCad for PCB development, I used a variety of methods to generate 3D models of my boards, including the most painful of all: exporting a basic STEP file from EAGLE, skinning the board with an image overlay, and manually placing all of the components in Creo. It took forever and I would not recommend it!
KiCad is kinda/sorta intended to be used with FreeCAD, which has already been discussed, but make sure you use the KiCadStepUp plugin for FreeCAD. It'll automatically parse a KiCad project file and generate the board, components, and silkscreen layers in 3D. Once you have that, you can export the assembly and edit or render it in your favorite CAD software since it's a standard STEP file. (Or just leave it in FreeCAD.)
FreeCAD is also useful for prepping new models before importing into KiCad. I believe older versions of KiCad preferred VRML models, which FreeCAD supports natively (usually requiring scaling by 1:25.4 due to the VRML format being dimensionless). Again, software can be mixed and matched. For importing custom models into KiCad, my workflow usually goes like this: 1) prep model in Creo: shorten leads, set colors, rotate coordinate system; 2) import into FreeCAD; 3) scale accordingly; 4) export as VRML; 5) import into KiCad. The process can be labor-intensive, but it all depends on how much detail you want to capture.
Also, I wanted to pass along Autodesk's library.io site for parametrically generating packages, footprints, and models:
https://library.io/.